mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-13 22:24:05 +01:00
Remove countMaskInv caching in bench framework
We were saving a div by caching the inverse as a float, but this ended up requiring a int -> float -> int conversion, which takes almost as much time as the difference between float mul and div. There are lots of other more pressing issues with the bench framework which probably require simply removing the adaptive iteration count stuff anyway.
This commit is contained in:
@@ -55,13 +55,13 @@ bool benchmark::State::KeepRunning()
|
||||
else {
|
||||
now = gettimedouble();
|
||||
double elapsed = now - lastTime;
|
||||
double elapsedOne = elapsed * countMaskInv;
|
||||
double elapsedOne = elapsed / (countMask + 1);
|
||||
if (elapsedOne < minTime) minTime = elapsedOne;
|
||||
if (elapsedOne > maxTime) maxTime = elapsedOne;
|
||||
|
||||
// We only use relative values, so don't have to handle 64-bit wrap-around specially
|
||||
nowCycles = perf_cpucycles();
|
||||
uint64_t elapsedOneCycles = (nowCycles - lastCycles) * countMaskInv;
|
||||
uint64_t elapsedOneCycles = (nowCycles - lastCycles) / (countMask + 1);
|
||||
if (elapsedOneCycles < minCycles) minCycles = elapsedOneCycles;
|
||||
if (elapsedOneCycles > maxCycles) maxCycles = elapsedOneCycles;
|
||||
|
||||
@@ -69,7 +69,6 @@ bool benchmark::State::KeepRunning()
|
||||
// If the execution was much too fast (1/128th of maxElapsed), increase the count mask by 8x and restart timing.
|
||||
// The restart avoids including the overhead of this code in the measurement.
|
||||
countMask = ((countMask<<3)|7) & ((1LL<<60)-1);
|
||||
countMaskInv = 1./(countMask+1);
|
||||
count = 0;
|
||||
minTime = std::numeric_limits<double>::max();
|
||||
maxTime = std::numeric_limits<double>::min();
|
||||
@@ -81,7 +80,6 @@ bool benchmark::State::KeepRunning()
|
||||
uint64_t newCountMask = ((countMask<<1)|1) & ((1LL<<60)-1);
|
||||
if ((count & newCountMask)==0) {
|
||||
countMask = newCountMask;
|
||||
countMaskInv = 1./(countMask+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user