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%.
Github-Pull: #9200
Rebased-From: e0a9cb25b0
This commit is contained in:
parent
0c09d9f00e
commit
eebc699d30
|
@ -64,8 +64,11 @@ bool State::KeepRunning()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (elapsed*16 < maxElapsed) {
|
if (elapsed*16 < maxElapsed) {
|
||||||
countMask = ((countMask<<1)|1) & ((1LL<<60)-1);
|
uint64_t newCountMask = ((countMask<<1)|1) & ((1LL<<60)-1);
|
||||||
countMaskInv = 1./(countMask+1);
|
if ((count & newCountMask)==0) {
|
||||||
|
countMask = newCountMask;
|
||||||
|
countMaskInv = 1./(countMask+1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastTime = now;
|
lastTime = now;
|
||||||
|
|
Loading…
Reference in New Issue