aboutsummaryrefslogtreecommitdiff
path: root/src/testing/benchmark_test.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2024-12-12 18:19:43 -0500
committerGopher Robot <gobot@golang.org>2024-12-15 21:41:23 -0800
commit6bd56fcaebde61eb6bd21906a7d7136d009be4a6 (patch)
treea922eaa5cd582651e361dba2063ba422cc9d5707 /src/testing/benchmark_test.go
parent090748d6c7973e9bb8f5efe069135c8ea0f0d89c (diff)
downloadgo-6bd56fcaebde61eb6bd21906a7d7136d009be4a6.tar.xz
testing: improve b.Loop example
The current b.Loop example doesn't focus on the basic usage of b.Loop. Replace this with a new example that uses (slightly) more realistic things to demonstrate the most salient points of b.Loop. We also move the example into an example file so that we can write a real Benchmark function and a real function to be benchmarks, which makes this much closer to what a user would actually write. Updates #61515. Change-Id: I4d830b3bfe3eb3cd8cdecef469fea0541baebb43 Reviewed-on: https://go-review.googlesource.com/c/go/+/635896 Auto-Submit: Austin Clements <austin@google.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/testing/benchmark_test.go')
-rw-r--r--src/testing/benchmark_test.go30
1 files changed, 0 insertions, 30 deletions
diff --git a/src/testing/benchmark_test.go b/src/testing/benchmark_test.go
index b3089b3119..239e730021 100644
--- a/src/testing/benchmark_test.go
+++ b/src/testing/benchmark_test.go
@@ -149,36 +149,6 @@ func TestBLoopHasResults(t *testing.T) {
}
}
-func ExampleB_Loop() {
- simpleFunc := func(i int) int {
- return i + 1
- }
- n := 0
- testing.Benchmark(func(b *testing.B) {
- // Unlike "for i := range b.N {...}" style loops, this
- // setup logic will only be executed once, so simpleFunc
- // will always get argument 1.
- n++
- // It behaves just like "for i := range N {...}", except with keeping
- // function call parameters and results alive.
- for b.Loop() {
- // This function call, if was in a normal loop, will be optimized away
- // completely, first by inlining, then by dead code elimination.
- // In a b.Loop loop, the compiler ensures that this function is not optimized away.
- simpleFunc(n)
- }
- // This clean-up will only be executed once, so after the benchmark, the user
- // will see n == 2.
- n++
- // Use b.ReportMetric as usual just like what a user may do after
- // b.N loop.
- })
- // We can expect n == 2 here.
-
- // The return value of the above Benchmark could be used just like
- // a b.N loop benchmark as well.
-}
-
func ExampleB_RunParallel() {
// Parallel benchmark for text/template.Template.Execute on a single object.
testing.Benchmark(func(b *testing.B) {