bench: Use CCheckQueue local thread pool

This commit is contained in:
Hennadii Stepanov 2020-08-21 09:24:48 +03:00
parent dba30695fc
commit 6784ac471b
No known key found for this signature in database
GPG Key ID: 410108112E7EA81F
2 changed files with 2 additions and 14 deletions

View File

@ -10,8 +10,6 @@
#include <random.h>
#include <util/system.h>
#include <boost/thread/thread.hpp>
#include <vector>
static const size_t BATCHES = 101;
@ -44,12 +42,9 @@ static void CCheckQueueSpeedPrevectorJob(benchmark::Bench& bench)
void swap(PrevectorJob& x){p.swap(x.p);};
};
CCheckQueue<PrevectorJob> queue {QUEUE_BATCH_SIZE};
boost::thread_group tg;
// The main thread should be counted to prevent thread oversubscription, and
// to decrease the variance of benchmark results.
for (auto x = 0; x < GetNumCores() - 1; ++x) {
tg.create_thread([&]{queue.Thread();});
}
queue.StartWorkerThreads(GetNumCores() - 1);
// create all the data once, then submit copies in the benchmark.
FastRandomContext insecure_rand(true);
@ -70,8 +65,7 @@ static void CCheckQueueSpeedPrevectorJob(benchmark::Bench& bench)
// it is done explicitly here for clarity
control.Wait();
});
tg.interrupt_all();
tg.join_all();
queue.StopWorkerThreads();
ECC_Stop();
}
BENCHMARK(CCheckQueueSpeedPrevectorJob);

View File

@ -159,12 +159,6 @@ public:
}
}
//! Worker thread
void Thread()
{
Loop(false /* worker thread */);
}
//! Wait until execution finishes, and return whether all evaluations were successful.
bool Wait()
{