mirror of https://github.com/golang/go.git
runtime: make Malloc benchmarks actually benchmark malloc
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>
This commit is contained in:
parent
05cc8b5369
commit
7717ac151a
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Reference in New Issue