[yul-phaser] AlgorithmRunner: Add support for ProgramCache

This commit is contained in:
Kamil Śliwak
2020-03-24 17:39:24 +01:00
parent 259f738f17
commit e2ff9698d3
4 changed files with 63 additions and 8 deletions
+17
View File
@@ -31,9 +31,12 @@ using namespace solidity::phaser;
void AlgorithmRunner::run(GeneticAlgorithm& _algorithm)
{
populationAutosave();
cacheClear();
for (size_t round = 0; !m_options.maxRounds.has_value() || round < m_options.maxRounds.value(); ++round)
{
cacheStartRound(round + 1);
m_population = _algorithm.runNextRound(m_population);
randomiseDuplicates();
@@ -66,6 +69,20 @@ void AlgorithmRunner::populationAutosave() const
);
}
void AlgorithmRunner::cacheClear()
{
for (auto& cache: m_programCaches)
if (cache != nullptr)
cache->clear();
}
void AlgorithmRunner::cacheStartRound(size_t _roundNumber)
{
for (auto& cache: m_programCaches)
if (cache != nullptr)
cache->startRound(_roundNumber);
}
void AlgorithmRunner::randomiseDuplicates()
{
if (m_options.randomiseDuplicates)