diff --git a/src/core/Benchmark.cpp b/src/core/Benchmark.cpp index 549af7ea..3840bddc 100644 --- a/src/core/Benchmark.cpp +++ b/src/core/Benchmark.cpp @@ -29,6 +29,18 @@ namespace xmrig { +Benchmark::Benchmark() : m_controller(nullptr), m_isNewBenchRun(true) { + for (BenchAlgo bench_algo = static_cast(0); bench_algo != BenchAlgo::MAX; bench_algo = static_cast(bench_algo + 1)) { + m_bench_job[bench_algo] = new Job(false, Algorithm(ba2a[bench_algo]), "benchmark"); + } +} + +Benchmark::~Benchmark() { + for (BenchAlgo bench_algo = static_cast(0); bench_algo != BenchAlgo::MAX; bench_algo = static_cast(bench_algo + 1)) { + delete m_bench_job[bench_algo]; + } +} + // start performance measurements from the first bench_algo void Benchmark::start() { JobResults::setListener(this); // register benchmark as job result listener to compute hashrates there @@ -121,7 +133,7 @@ float Benchmark::get_algo_perf(Algorithm::Id algo) const { // start performance measurements for specified perf bench_algo void Benchmark::start(const BenchAlgo bench_algo) { // prepare test job for benchmark runs ("benchmark" client id is to make sure we can detect benchmark jobs) - static Job job(false, Algorithm(ba2a[bench_algo]), "benchmark"); + Job& job = *m_bench_job[bench_algo]; job.setId(Algorithm(ba2a[bench_algo]).shortName()); // need to set different id so that workers will see job change // 99 here to trigger all future bench_algo versions for auto veriant detection based on block version job.setBlob("9905A0DBD6BF05CF16E503F3A66F78007CBF34144332ECBFC22ED95C8700383B309ACE1923A0964B00000008BA939A62724C0D7581FCE5761E9D8A0E6A1C3F924FDD8493D1115649C05EB601");