mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
53 lines
976 B
Go
53 lines
976 B
Go
|
|
// Copyright 2013 The Go Authors. All rights reserved.
|
||
|
|
// Use of this source code is governed by a BSD-style
|
||
|
|
// license that can be found in the LICENSE file.
|
||
|
|
|
||
|
|
package runtime_test
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
"unsafe"
|
||
|
|
)
|
||
|
|
|
||
|
|
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))
|
||
|
|
}
|
||
|
|
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))
|
||
|
|
}
|
||
|
|
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))
|
||
|
|
}
|
||
|
|
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))
|
||
|
|
}
|
||
|
|
mallocSink = x
|
||
|
|
}
|