Fixed benchmark job object lifetime

This commit is contained in:
MoneroOcean 2019-07-30 00:07:47 -07:00
parent 61e8eb5ada
commit d87ce78a64

View file

@ -29,6 +29,18 @@
namespace xmrig {
Benchmark::Benchmark() : m_controller(nullptr), m_isNewBenchRun(true) {
for (BenchAlgo bench_algo = static_cast<BenchAlgo>(0); bench_algo != BenchAlgo::MAX; bench_algo = static_cast<BenchAlgo>(bench_algo + 1)) {
m_bench_job[bench_algo] = new Job(false, Algorithm(ba2a[bench_algo]), "benchmark");
}
}
Benchmark::~Benchmark() {
for (BenchAlgo bench_algo = static_cast<BenchAlgo>(0); bench_algo != BenchAlgo::MAX; bench_algo = static_cast<BenchAlgo>(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");