aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2025-06-02 16:24:07 -0700
committerGopher Robot <gobot@golang.org>2025-06-02 17:09:50 -0700
commit49f63047245a50f4ec38044fc6fa2bc75719726a (patch)
tree48e018853f97a23a302deaf64cdfac06e7f200ec /src/runtime
parenteebae283b6e91f0bf2bd15b1fda24189841d45b8 (diff)
downloadgo-49f63047245a50f4ec38044fc6fa2bc75719726a.tar.xz
runtime: additional memmove benchmarks
For testing out duffcopy changes. Change-Id: I93b4a52d75418a6e31aae5ad99f95d1870812b69 Reviewed-on: https://go-review.googlesource.com/c/go/+/678215 Reviewed-by: David Chase <drchase@google.com> Auto-Submit: Keith Randall <khr@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/memmove_test.go99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/runtime/memmove_test.go b/src/runtime/memmove_test.go
index ba9bc1f6b6..a2c3b72568 100644
--- a/src/runtime/memmove_test.go
+++ b/src/runtime/memmove_test.go
@@ -1123,3 +1123,102 @@ func BenchmarkMemclrKnownSize512KiB(b *testing.B) {
memclrSink = x[:]
}
+
+func BenchmarkMemmoveKnownSize112(b *testing.B) {
+ type T struct {
+ x [112]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}
+func BenchmarkMemmoveKnownSize128(b *testing.B) {
+ type T struct {
+ x [128]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}
+func BenchmarkMemmoveKnownSize192(b *testing.B) {
+ type T struct {
+ x [192]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}
+func BenchmarkMemmoveKnownSize248(b *testing.B) {
+ type T struct {
+ x [248]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}
+func BenchmarkMemmoveKnownSize256(b *testing.B) {
+ type T struct {
+ x [256]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}
+func BenchmarkMemmoveKnownSize512(b *testing.B) {
+ type T struct {
+ x [512]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}
+func BenchmarkMemmoveKnownSize1024(b *testing.B) {
+ type T struct {
+ x [1024]int8
+ }
+ p := &T{}
+ q := &T{}
+
+ b.SetBytes(int64(unsafe.Sizeof(T{})))
+ for i := 0; i < b.N; i++ {
+ *p = *q
+ }
+
+ memclrSink = p.x[:]
+}