]> Cypherpunks repositories - gostls13.git/commitdiff
path: add Join benchmark
authorKeith Randall <khr@golang.org>
Fri, 11 Apr 2025 23:35:13 +0000 (16:35 -0700)
committerKeith Randall <khr@google.com>
Mon, 14 Apr 2025 15:06:30 +0000 (08:06 -0700)
This is a case where CL 653856 saves an allocation.

        │     old     │                 new                 │
        │   sec/op    │   sec/op     vs base                │
Join-24   73.57n ± 1%   60.27n ± 1%  -18.07% (p=0.000 n=10)

        │    old     │                new                 │
        │    B/op    │    B/op     vs base                │
Join-24   48.00 ± 0%   24.00 ± 0%  -50.00% (p=0.000 n=10)

        │    old     │                new                 │
        │ allocs/op  │ allocs/op   vs base                │
Join-24   2.000 ± 0%   1.000 ± 0%  -50.00% (p=0.000 n=10)

Change-Id: I56308262ca73a7ab9698b54fd8681f5b44626995
Reviewed-on: https://go-review.googlesource.com/c/go/+/665075
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/path/path_test.go

index a57286f6b8468b17de80e4ca3ffa78d90820dfac..6bd7a2cdad885c652c64aff44f62a50ca303f7c4 100644 (file)
@@ -5,6 +5,7 @@
 package path_test
 
 import (
+       "path"
        . "path"
        "runtime"
        "testing"
@@ -234,3 +235,14 @@ func TestIsAbs(t *testing.T) {
                }
        }
 }
+
+func BenchmarkJoin(b *testing.B) {
+       b.ReportAllocs()
+       parts := []string{"one", "two", "three", "four"}
+       s := parts[0]
+       for b.Loop() {
+               parts[0] = s
+               s = path.Join(parts...)
+               s = s[:3]
+       }
+}