path: add Join benchmark

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>
This commit is contained in:
Keith Randall 2025-04-11 16:35:13 -07:00 committed by Keith Randall
parent 80bff42fdd
commit e278a789b6

View 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]
}
}