diff options
| author | Wladimir J. van der Laan <[email protected]> | 2016-11-22 09:59:50 +0100 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2016-11-22 10:01:41 +0100 |
| commit | e0a9cb25b0af87723d50cb8d8cffa10f1ebf7dcc (patch) | |
| tree | c364b3a50ffbb06cff94102754da92729feada7e /src/bench/bench.cpp | |
| parent | Merge #9185: [Qt] fix coincontrol sort issue (diff) | |
| download | discoin-e0a9cb25b0af87723d50cb8d8cffa10f1ebf7dcc.tar.xz discoin-e0a9cb25b0af87723d50cb8d8cffa10f1ebf7dcc.zip | |
bench: Fix subtle counting issue when rescaling iteration count
Make sure that the count is a zero modulo the new mask before
scaling, otherwise the next time until a measure triggers
will take only 1/2 as long as accounted for. This caused
the 'min time' to be potentially off by as much as 100%.
Diffstat (limited to 'src/bench/bench.cpp')
| -rw-r--r-- | src/bench/bench.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/bench/bench.cpp b/src/bench/bench.cpp index 227546a7a..8942da8c7 100644 --- a/src/bench/bench.cpp +++ b/src/bench/bench.cpp @@ -64,8 +64,11 @@ bool State::KeepRunning() return true; } if (elapsed*16 < maxElapsed) { - countMask = ((countMask<<1)|1) & ((1LL<<60)-1); - countMaskInv = 1./(countMask+1); + uint64_t newCountMask = ((countMask<<1)|1) & ((1LL<<60)-1); + if ((count & newCountMask)==0) { + countMask = newCountMask; + countMaskInv = 1./(countMask+1); + } } } lastTime = now; |