aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJunyang Shao <shaojunyang@google.com>2025-03-18 21:13:23 +0000
committerGo LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>2025-03-20 12:42:51 -0700
commitb613d21ffd17c1dda480b205f0cce5031bdbd5dd (patch)
treec0cb496cc552291bb36f296cc857e253440eb90a /src
parentba50de84299667dcaa2f4e6663078340bbae8c67 (diff)
downloadgo-b613d21ffd17c1dda480b205f0cce5031bdbd5dd.tar.xz
testing: allow manual timer control in testing.B.Loop
Fixes #72922 Change-Id: I56610d2d11d151a8f95b6434bbedbfcd5c11c317 Reviewed-on: https://go-review.googlesource.com/c/go/+/658975 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Commit-Queue: Junyang Shao <shaojunyang@google.com> Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/testing/benchmark.go6
-rw-r--r--src/testing/loop_test.go10
2 files changed, 9 insertions, 7 deletions
diff --git a/src/testing/benchmark.go b/src/testing/benchmark.go
index 6919341ef7..ca12bd2fa2 100644
--- a/src/testing/benchmark.go
+++ b/src/testing/benchmark.go
@@ -368,8 +368,8 @@ func (b *B) ReportMetric(n float64, unit string) {
}
func (b *B) stopOrScaleBLoop() bool {
- timeElapsed := highPrecisionTimeSince(b.start)
- if timeElapsed >= b.benchTime.d {
+ t := b.Elapsed()
+ if t >= b.benchTime.d {
// Stop the timer so we don't count cleanup time
b.StopTimer()
return false
@@ -377,7 +377,7 @@ func (b *B) stopOrScaleBLoop() bool {
// Loop scaling
goalns := b.benchTime.d.Nanoseconds()
prevIters := int64(b.N)
- b.N = predictN(goalns, prevIters, timeElapsed.Nanoseconds(), prevIters)
+ b.N = predictN(goalns, prevIters, t.Nanoseconds(), prevIters)
b.loopN++
return true
}
diff --git a/src/testing/loop_test.go b/src/testing/loop_test.go
index 7a1a93fcee..781a8566e8 100644
--- a/src/testing/loop_test.go
+++ b/src/testing/loop_test.go
@@ -7,7 +7,7 @@ package testing
func TestBenchmarkBLoop(t *T) {
var initialStart highPrecisionTime
var firstStart highPrecisionTime
- var lastStart highPrecisionTime
+ var scaledStart highPrecisionTime
var runningEnd bool
runs := 0
iters := 0
@@ -19,7 +19,9 @@ func TestBenchmarkBLoop(t *T) {
if iters == 0 {
firstStart = b.start
}
- lastStart = b.start
+ if iters == 1 {
+ scaledStart = b.start
+ }
iters++
}
finalBN = b.N
@@ -45,8 +47,8 @@ func TestBenchmarkBLoop(t *T) {
if firstStart == initialStart {
t.Errorf("b.Loop did not reset the timer")
}
- if lastStart != firstStart {
- t.Errorf("timer was reset during iteration")
+ if scaledStart != firstStart {
+ t.Errorf("b.Loop stops and restarts the timer during iteration")
}
// Verify that it stopped the timer after the last loop.
if runningEnd {