}
func predictN(goalns int64, prevIters int64, prevns int64, last int64) int {
+ if prevns == 0 {
+ // Round up to dodge divide by zero. See https://go.dev/issue/70709.
+ prevns = 1
+ }
+
// Order of operations matters.
// For very fast benchmarks, prevIters ~= prevns.
// If you divide first, you get 0 or 1,
// Predict required iterations.
goalns := d.Nanoseconds()
prevIters := int64(b.N)
- prevns := b.duration.Nanoseconds()
- if prevns <= 0 {
- // Round up, to avoid div by zero.
- prevns = 1
- }
- n = int64(predictN(goalns, prevIters, prevns, last))
+ n = int64(predictN(goalns, prevIters, b.duration.Nanoseconds(), last))
b.runN(int(n))
}
}