From 3ee391cc835a58af0a7cb049e7dd4515d30452c7 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Fri, 18 Jul 2014 12:18:36 -0700 Subject: [PATCH] runtime: add Benchmark[Clear|Copy]Fat[16|24] These benchmarks are important for performance. When compiling the stdlib: * 77.1% of the calls to sgen (copyfat) are for 16 bytes; another 8.7% are for 24 bytes. (The next most common is 32 bytes, at 5.7%.) * Over half the calls to clearfat are for 16 or 24 bytes. LGTM=khr R=golang-codereviews, khr CC=golang-codereviews https://golang.org/cl/111350043 --- src/pkg/runtime/memmove_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/pkg/runtime/memmove_test.go b/src/pkg/runtime/memmove_test.go index 540f0feb54..09f5dbdac5 100644 --- a/src/pkg/runtime/memmove_test.go +++ b/src/pkg/runtime/memmove_test.go @@ -162,6 +162,18 @@ func BenchmarkMemclr256(b *testing.B) { bmMemclr(b, 256) } func BenchmarkMemclr4096(b *testing.B) { bmMemclr(b, 4096) } func BenchmarkMemclr65536(b *testing.B) { bmMemclr(b, 65536) } +func BenchmarkClearFat16(b *testing.B) { + for i := 0; i < b.N; i++ { + var x [16]byte + _ = x + } +} +func BenchmarkClearFat24(b *testing.B) { + for i := 0; i < b.N; i++ { + var x [24]byte + _ = x + } +} func BenchmarkClearFat32(b *testing.B) { for i := 0; i < b.N; i++ { var x [32]byte @@ -199,6 +211,20 @@ func BenchmarkClearFat1024(b *testing.B) { } } +func BenchmarkCopyFat16(b *testing.B) { + var x [16 / 4]uint32 + for i := 0; i < b.N; i++ { + y := x + _ = y + } +} +func BenchmarkCopyFat24(b *testing.B) { + var x [24 / 4]uint32 + for i := 0; i < b.N; i++ { + y := x + _ = y + } +} func BenchmarkCopyFat32(b *testing.B) { var x [32 / 4]uint32 for i := 0; i < b.N; i++ { -- 2.48.1