From 11563666e6ff0aee6223d0da81185bcd720dbabf Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 22 May 2024 09:43:12 +0200 Subject: [PATCH] #11358 Guard overwrite of already calculated statistics values Statistics can be computed in two ways, precise using all available cell values and fast based on a histogram. A flag indicates if the P10/P90 values are calculated. Check this flag before assigning values using the fast histogram method. --- .../RigStatisticsDataCache.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ApplicationLibCode/ResultStatisticsCache/RigStatisticsDataCache.cpp b/ApplicationLibCode/ResultStatisticsCache/RigStatisticsDataCache.cpp index 506fc60b49..1a4b991793 100644 --- a/ApplicationLibCode/ResultStatisticsCache/RigStatisticsDataCache.cpp +++ b/ApplicationLibCode/ResultStatisticsCache/RigStatisticsDataCache.cpp @@ -396,8 +396,13 @@ void RigStatisticsDataCache::computeHistogramStatisticsIfNeeded() m_statisticsCalculator->addDataToHistogramCalculator( histCalc ); - m_statsAllTimesteps.m_p10 = histCalc.calculatePercentil( 0.1, RigStatisticsMath::PercentileStyle::SWITCHED ); - m_statsAllTimesteps.m_p90 = histCalc.calculatePercentil( 0.9, RigStatisticsMath::PercentileStyle::SWITCHED ); + if ( !m_statsAllTimesteps.m_isp10p90Calculated ) + { + m_statsAllTimesteps.m_p10 = histCalc.calculatePercentil( 0.1, RigStatisticsMath::PercentileStyle::SWITCHED ); + m_statsAllTimesteps.m_p90 = histCalc.calculatePercentil( 0.9, RigStatisticsMath::PercentileStyle::SWITCHED ); + + m_statsAllTimesteps.m_isp10p90Calculated = true; + } } } @@ -416,8 +421,13 @@ void RigStatisticsDataCache::computeHistogramStatisticsIfNeeded( size_t timeStep m_statisticsCalculator->addDataToHistogramCalculator( timeStepIndex, histCalc ); - m_statsPrTs[timeStepIndex].m_p10 = histCalc.calculatePercentil( 0.1, RigStatisticsMath::PercentileStyle::SWITCHED ); - m_statsPrTs[timeStepIndex].m_p90 = histCalc.calculatePercentil( 0.9, RigStatisticsMath::PercentileStyle::SWITCHED ); + if ( !m_statsPrTs[timeStepIndex].m_isp10p90Calculated ) + { + m_statsPrTs[timeStepIndex].m_p10 = histCalc.calculatePercentil( 0.1, RigStatisticsMath::PercentileStyle::SWITCHED ); + m_statsPrTs[timeStepIndex].m_p90 = histCalc.calculatePercentil( 0.9, RigStatisticsMath::PercentileStyle::SWITCHED ); + + m_statsPrTs[timeStepIndex].m_isp10p90Calculated = true; + } } }