| // 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 |
| } |