]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: make Malloc benchmarks actually benchmark malloc
authorCherry Mui <cherryyz@google.com>
Thu, 10 Nov 2022 16:23:40 +0000 (11:23 -0500)
committerCherry Mui <cherryyz@google.com>
Thu, 10 Nov 2022 17:33:31 +0000 (17:33 +0000)
The compiler is too clever so the allocations are currently
avoided. Rewrite to make them actually allocate.

Change-Id: I9542e1365120b2ace318360883b0b01ed5670da7
Reviewed-on: https://go-review.googlesource.com/c/go/+/449476
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/runtime/malloc_test.go

index a13f382172132a46d9ca89add21b84554fcbb5d6..5b9ce9882e2e1d0a0d9a3e33cc744db262da5a1f 100644 (file)
@@ -318,46 +318,36 @@ func TestArenaCollision(t *testing.T) {
        }
 }
 
-var mallocSink uintptr
-
 func BenchmarkMalloc8(b *testing.B) {
-       var x uintptr
        for i := 0; i < b.N; i++ {
                p := new(int64)
-               x ^= uintptr(unsafe.Pointer(p))
+               Escape(p)
        }
-       mallocSink = x
 }
 
 func BenchmarkMalloc16(b *testing.B) {
-       var x uintptr
        for i := 0; i < b.N; i++ {
                p := new([2]int64)
-               x ^= uintptr(unsafe.Pointer(p))
+               Escape(p)
        }
-       mallocSink = x
 }
 
 func BenchmarkMallocTypeInfo8(b *testing.B) {
-       var x uintptr
        for i := 0; i < b.N; i++ {
                p := new(struct {
                        p [8 / unsafe.Sizeof(uintptr(0))]*int
                })
-               x ^= uintptr(unsafe.Pointer(p))
+               Escape(p)
        }
-       mallocSink = x
 }
 
 func BenchmarkMallocTypeInfo16(b *testing.B) {
-       var x uintptr
        for i := 0; i < b.N; i++ {
                p := new(struct {
                        p [16 / unsafe.Sizeof(uintptr(0))]*int
                })
-               x ^= uintptr(unsafe.Pointer(p))
+               Escape(p)
        }
-       mallocSink = x
 }
 
 type LargeStruct struct {
@@ -365,12 +355,10 @@ type LargeStruct struct {
 }
 
 func BenchmarkMallocLargeStruct(b *testing.B) {
-       var x uintptr
        for i := 0; i < b.N; i++ {
                p := make([]LargeStruct, 2)
-               x ^= uintptr(unsafe.Pointer(&p[0]))
+               Escape(p)
        }
-       mallocSink = x
 }
 
 var n = flag.Int("n", 1000, "number of goroutines")