From 3800246b790d046dd51f49a275cf994c6c678f2c Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 25 Aug 2023 10:39:19 +0200 Subject: [PATCH] Performance: Slow performance for some plot and curve operations * Performance: Cache registry value * Performance: Avoid recursive update Early return if values are identical updateConnectedEditors is handled by setValueFromUiEditor Avoid fieldChanged in analyzePlotsAndAdjustAppearanceSettings --- ApplicationLibCode/Application/RiaApplication.cpp | 10 ++++++++-- .../ProjectDataModel/RimPlotAxisProperties.cpp | 4 ++-- .../ProjectDataModel/RimPlotAxisProperties.h | 2 +- .../ProjectDataModel/Summary/RimSummaryMultiPlot.cpp | 6 ++++-- .../ProjectDataModel/Summary/RimSummaryPlot.cpp | 2 -- .../Summary/RimSummaryTimeAxisProperties.cpp | 4 ++-- .../Summary/RimSummaryTimeAxisProperties.h | 2 +- .../cafPdmUiCore/cafPdmUiFieldHandle.cpp | 3 ++- 8 files changed, 20 insertions(+), 13 deletions(-) diff --git a/ApplicationLibCode/Application/RiaApplication.cpp b/ApplicationLibCode/Application/RiaApplication.cpp index 32cce6a2b5..469404b433 100644 --- a/ApplicationLibCode/Application/RiaApplication.cpp +++ b/ApplicationLibCode/Application/RiaApplication.cpp @@ -209,8 +209,14 @@ const char* RiaApplication::getVersionStringApp( bool includeCrtInfo ) //-------------------------------------------------------------------------------------------------- bool RiaApplication::enableDevelopmentFeatures() { - QString environmentVar = QProcessEnvironment::systemEnvironment().value( "RESINSIGHT_DEVEL", QString( "0" ) ); - return environmentVar.toInt() == 1; + static int envValue = -999; + if ( envValue == -999 ) + { + QString environmentVar = QProcessEnvironment::systemEnvironment().value( "RESINSIGHT_DEVEL", QString( "0" ) ); + envValue = environmentVar.toInt(); + } + + return envValue == 1; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp index a0a4bc9902..b4ec8e965b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp @@ -648,11 +648,11 @@ void RimPlotAxisProperties::setMajorTickmarkCount( LegendTickmarkCount count ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPlotAxisProperties::setAutoValueForMajorTickmarkCount( LegendTickmarkCount count ) +void RimPlotAxisProperties::setAutoValueForMajorTickmarkCount( LegendTickmarkCount count, bool notifyFieldChanged ) { auto enumValue = static_cast>( count ); - m_majorTickmarkCount.uiCapability()->setAutoValue( enumValue ); + m_majorTickmarkCount.uiCapability()->setAutoValue( enumValue, notifyFieldChanged ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h index 871063b20a..fb96a8a04d 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h +++ b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h @@ -123,7 +123,7 @@ class RimPlotAxisProperties : public RimPlotAxisPropertiesInterface LegendTickmarkCount majorTickmarkCount() const override; void setMajorTickmarkCount( LegendTickmarkCount count ) override; - void setAutoValueForMajorTickmarkCount( LegendTickmarkCount count ); + void setAutoValueForMajorTickmarkCount( LegendTickmarkCount count, bool notifyFieldChanged ); void enableAutoValueForMajorTickmarkCount( bool enable ); void enableAutoValueForAllFields( bool enable ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp index 8bbb13d057..aad1d86a3d 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp @@ -1269,6 +1269,8 @@ void RimSummaryMultiPlot::analyzePlotsAndAdjustAppearanceSettings() bool canShowOneAxisTitlePerRow = analyzer.isSingleQuantityIgnoreHistory() && ( m_axisRangeAggregation() != AxisRangeAggregation::NONE ); + const bool notifyFieldChanged = false; + for ( auto p : summaryPlots() ) { auto timeAxisProp = p->timeAxisProperties(); @@ -1276,7 +1278,7 @@ void RimSummaryMultiPlot::analyzePlotsAndAdjustAppearanceSettings() auto tickMarkCount = ( columnCount() < 3 ) ? RimPlotAxisProperties::LegendTickmarkCount::TICKMARK_DEFAULT : RimPlotAxisProperties::LegendTickmarkCount::TICKMARK_FEW; - timeAxisProp->setAutoValueForMajorTickmarkCount( tickMarkCount ); + timeAxisProp->setAutoValueForMajorTickmarkCount( tickMarkCount, notifyFieldChanged ); for ( auto* axisProp : p->plotYAxes() ) { @@ -1285,7 +1287,7 @@ void RimSummaryMultiPlot::analyzePlotsAndAdjustAppearanceSettings() auto tickMarkCount = ( rowsPerPage() == 1 ) ? RimPlotAxisProperties::LegendTickmarkCount::TICKMARK_DEFAULT : RimPlotAxisProperties::LegendTickmarkCount::TICKMARK_FEW; - axisProp->setAutoValueForMajorTickmarkCount( tickMarkCount ); + axisProp->setAutoValueForMajorTickmarkCount( tickMarkCount, notifyFieldChanged ); axisProp->computeAndSetAutoValueForScaleFactor(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index c00abd7075..a05c865b53 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -1924,8 +1924,6 @@ void RimSummaryPlot::updateZoomFromParentPlot() axisProperties->setVisibleRangeMax( axisMax ); axisProperties->setVisibleRangeMin( axisMin ); - - axisProperties->updateConnectedEditors(); } } diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp index 302b3bce1b..f95b5b97aa 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp @@ -553,11 +553,11 @@ void RimSummaryTimeAxisProperties::setMajorTickmarkCount( LegendTickmarkCount co //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimSummaryTimeAxisProperties::setAutoValueForMajorTickmarkCount( LegendTickmarkCount count ) +void RimSummaryTimeAxisProperties::setAutoValueForMajorTickmarkCount( LegendTickmarkCount count, bool notifyFieldChanged ) { auto enumValue = static_cast>( count ); - m_majorTickmarkCount.uiCapability()->setAutoValue( enumValue ); + m_majorTickmarkCount.uiCapability()->setAutoValue( enumValue, notifyFieldChanged ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h index 926078c5ce..d6976c031e 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h @@ -135,7 +135,7 @@ class RimSummaryTimeAxisProperties : public RimPlotAxisPropertiesInterface LegendTickmarkCount majorTickmarkCount() const override; void setMajorTickmarkCount( LegendTickmarkCount count ) override; - void setAutoValueForMajorTickmarkCount( LegendTickmarkCount count ); + void setAutoValueForMajorTickmarkCount( LegendTickmarkCount count, bool notifyFieldChanged ); void enableAutoValueForMajorTickmarkCount( bool enable ); const QString objectName() const override; diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiFieldHandle.cpp b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiFieldHandle.cpp index bbc92d8b83..e29523feef 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiFieldHandle.cpp +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiFieldHandle.cpp @@ -140,6 +140,8 @@ void PdmUiFieldHandle::enableAndSetAutoValue( const QVariant& autoValue ) //-------------------------------------------------------------------------------------------------- void PdmUiFieldHandle::setAutoValue( const QVariant& autoValue, bool notifyFieldChanged ) { + if ( m_autoValue == autoValue ) return; + m_autoValue = autoValue; applyAutoValueAndUpdateEditors( notifyFieldChanged ); @@ -257,7 +259,6 @@ void PdmUiFieldHandle::applyAutoValueAndUpdateEditors( bool notifyFieldChanged ) if ( m_useAutoValue && m_autoValue.isValid() ) { setValueFromUiEditor( m_autoValue, notifyFieldChanged ); - updateConnectedEditors(); } }