diff --git a/src/App.cpp b/src/App.cpp index 1f6fc2fb..1af0c92e 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -139,7 +139,9 @@ int App::exec() : " >>>>> STARTING ALGO PERFORMANCE CALIBRATION (with %i seconds round)", m_controller->config()->calibrateAlgoTime() ); - benchmark.start_perf_bench(xmrig::PerfAlgo::PA_CN); // start benchmarking from first PerfAlgo in the list + // start benchmarking from first PerfAlgo in the list + if (m_controller->config()->get_algo_perf(xmrig::PA_CN) == 0.0f) benchmark.shoud_save_config(); + benchmark.start_perf_bench(xmrig::PerfAlgo::PA_CN); } else { m_controller->network()->connect(); } diff --git a/src/core/Config.cpp b/src/core/Config.cpp index a8a51d42..d72ae86f 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -46,7 +46,6 @@ static char affinity_tmp[20] = { 0 }; xmrig::Config::Config() : xmrig::CommonConfig(), - m_shouldSave(false), m_aesMode(AES_AUTO), m_algoVariant(AV_AUTO), m_hugePages(true), @@ -350,8 +349,6 @@ void xmrig::Config::parseJSON(const rapidjson::Document &doc) } } } - - if (m_algo_perf[xmrig::PA_CN] == 0.0f) m_shouldSave = true; } diff --git a/src/core/Config.h b/src/core/Config.h index 539944d4..ffb85f40 100644 --- a/src/core/Config.h +++ b/src/core/Config.h @@ -76,7 +76,6 @@ public: void getJSON(rapidjson::Document &doc) const override; - inline bool isShouldSave() const { return m_shouldSave; } inline AesMode aesMode() const { return m_aesMode; } inline AlgoVariant algoVariant() const { return m_algoVariant; } inline bool isHugePages() const { return m_hugePages; } @@ -132,7 +131,6 @@ private: }; - bool m_shouldSave; AesMode m_aesMode; AlgoVariant m_algoVariant; bool m_hugePages; diff --git a/src/workers/Benchmark.cpp b/src/workers/Benchmark.cpp index 1663a9e9..c32db0d0 100644 --- a/src/workers/Benchmark.cpp +++ b/src/workers/Benchmark.cpp @@ -80,7 +80,7 @@ void Benchmark::onJobResult(const JobResult& result) { start_perf_bench(next_pa); } else { // end of benchmarks and switching to jobs from the pool (network) m_pa = xmrig::PA_INVALID; - if (m_controller->config()->isShouldSave()) m_controller->config()->save(); // save config with measured algo-perf + if (m_shouldSaveConfig) m_controller->config()->save(); // save config with measured algo-perf Workers::pause(); // do not compute anything before job from the pool m_controller->network()->connect(); } diff --git a/src/workers/Benchmark.h b/src/workers/Benchmark.h index ae74310e..e639c0d0 100644 --- a/src/workers/Benchmark.h +++ b/src/workers/Benchmark.h @@ -31,9 +31,10 @@ #include "core/Controller.h" class Benchmark : public IJobResultListener { - xmrig::PerfAlgo m_pa; // current perf algo we benchmark - uint64_t m_hash_count; // number of hashes calculated for current perf algo - uint64_t m_time_start; // time of measurements start for current perf algo (in ms) + bool m_shouldSaveConfig; // should save config after all benchmark rounds + xmrig::PerfAlgo m_pa; // current perf algo we benchmark + uint64_t m_hash_count; // number of hashes calculated for current perf algo + uint64_t m_time_start; // time of measurements start for current perf algo (in ms) xmrig::Controller* m_controller; // to get access to config and network uint64_t get_now() const; // get current time in ms @@ -41,9 +42,10 @@ class Benchmark : public IJobResultListener { void onJobResult(const JobResult&) override; // onJobResult is called after each computed benchmark hash public: - Benchmark() {} + Benchmark() : m_shouldSaveConfig(false) {} virtual ~Benchmark() {} void set_controller(xmrig::Controller* controller) { m_controller = controller; } + void shoud_save_config() { m_shouldSaveConfig = true; } void start_perf_bench(const xmrig::PerfAlgo); // start benchmark for specified perf algo };