Implement an AtomicTimer

This commit is contained in:
Jack Grigg
2017-03-23 12:35:44 +13:00
parent 3b11e24f92
commit 73bf85b44f
2 changed files with 67 additions and 1 deletions

View File

@@ -5,6 +5,7 @@
#include "uint256.h"
#include <atomic>
#include <mutex>
#include <string>
struct AtomicCounter {
@@ -20,11 +21,37 @@ struct AtomicCounter {
--value;
}
int get(){
int get() const {
return value.load();
}
};
class AtomicTimer {
private:
std::mutex mtx;
uint64_t threads;
int64_t start_time;
int64_t total_time;
public:
AtomicTimer() : threads(0), start_time(0), total_time(0) {}
/**
* Starts timing on first call, and counts the number of calls.
*/
void start();
/**
* Counts number of calls, and stops timing after it has been called as
* many times as start().
*/
void stop();
bool running();
double rate(const AtomicCounter& count);
};
extern AtomicCounter transactionsValidated;
extern AtomicCounter ehSolverRuns;
extern AtomicCounter solutionTargetChecks;