Improve summary calculation performance

* Only reload calculation data
* Make sure performance is good when a calculated object is added or changed
- avoid recreation of summary file readers
- delete all nodes in address tree representing calculated curves
- build address nodes for calculated curves
This commit is contained in:
Magne Sjaastad
2024-02-26 13:55:41 +01:00
committed by GitHub
parent 28d281e1d6
commit 672fbe177b
22 changed files with 143 additions and 81 deletions

View File

@@ -56,7 +56,7 @@ public:
private:
int indexFromAddress( const RifEclipseSummaryAddress& resultAddress ) const;
void buildMetaData();
void buildMetaData() override;
private:
ecl_sum_type* m_ecl_sum;

View File

@@ -36,7 +36,7 @@ void RifMultipleSummaryReaders::addReader( RifSummaryReaderInterface* reader )
m_readers.push_back( reader );
rebuildMetaData();
buildMetaData();
}
//--------------------------------------------------------------------------------------------------
@@ -45,7 +45,7 @@ void RifMultipleSummaryReaders::addReader( RifSummaryReaderInterface* reader )
void RifMultipleSummaryReaders::removeReader( RifSummaryReaderInterface* reader )
{
m_readers.erase( reader );
rebuildMetaData();
buildMetaData();
}
//--------------------------------------------------------------------------------------------------
@@ -100,7 +100,7 @@ RiaDefines::EclipseUnitSystem RifMultipleSummaryReaders::unitSystem() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifMultipleSummaryReaders::rebuildMetaData()
void RifMultipleSummaryReaders::buildMetaData()
{
m_allErrorAddresses.clear();
m_allResultAddresses.clear();

View File

@@ -40,7 +40,7 @@ public:
std::string unitName( const RifEclipseSummaryAddress& resultAddress ) const override;
RiaDefines::EclipseUnitSystem unitSystem() const override;
void rebuildMetaData();
void buildMetaData() override;
private:
cvf::Collection<RifSummaryReaderInterface> m_readers;

View File

@@ -78,7 +78,7 @@ public:
RiaDefines::EclipseUnitSystem unitSystem() const override;
private:
void buildMetaData();
void buildMetaData() override;
bool openFileReader( const QString& fileName, bool includeRestartFiles, RiaThreadSafeLogger* threadSafeLogger );
static void increaseEsmryFileCount();

View File

@@ -62,7 +62,7 @@ public:
RiaDefines::EclipseUnitSystem unitSystem() const override;
private:
void buildMetaData();
void buildMetaData() override;
bool openESmryFile( const QString& headerFileName, bool includeRestartFiles, RiaThreadSafeLogger* threadSafeLogger );
private:

View File

@@ -54,10 +54,9 @@ public:
std::pair<bool, std::vector<double>> values( const RifEclipseSummaryAddress& resultAddress ) const override;
std::string unitName( const RifEclipseSummaryAddress& resultAddress ) const override;
RiaDefines::EclipseUnitSystem unitSystem() const override;
void buildMetaData() override;
private:
void buildMetaData();
RifSummaryReaderInterface* currentSummaryReader() const;
private:

View File

@@ -49,6 +49,13 @@ RifEclipseSummaryAddress RifSummaryReaderInterface::errorAddress( const RifEclip
return m_allErrorAddresses.find( errAddr ) != m_allErrorAddresses.end() ? errAddr : RifEclipseSummaryAddress();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifSummaryReaderInterface::buildMetaData()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -51,6 +51,8 @@ public:
virtual std::string unitName( const RifEclipseSummaryAddress& resultAddress ) const = 0;
virtual RiaDefines::EclipseUnitSystem unitSystem() const = 0;
virtual void buildMetaData();
protected:
std::set<RifEclipseSummaryAddress> m_allResultAddresses; // Result and error addresses
std::set<RifEclipseSummaryAddress> m_allErrorAddresses; // Error addresses