package benchmarks
|
|
|
|
import (
|
|
"sync/atomic"
|
|
"testing"
|
|
"unsafe"
|
|
)
|
|
|
|
func BenchmarkAtomicUintPtr(b *testing.B) {
|
|
b.StopTimer()
|
|
pointers := make([]uintptr, 1000)
|
|
b.Log(unsafe.Sizeof(pointers[0]))
|
|
b.StartTimer()
|
|
|
|
for j := 0; j < b.N; j++ {
|
|
atomic.StoreUintptr(&pointers[j%1000], uintptr(j))
|
|
}
|
|
}
|
|
|
|
func BenchmarkAtomicPointer(b *testing.B) {
|
|
b.StopTimer()
|
|
pointers := make([]unsafe.Pointer, 1000)
|
|
b.Log(unsafe.Sizeof(pointers[0]))
|
|
b.StartTimer()
|
|
|
|
for j := 0; j < b.N; j++ {
|
|
atomic.StorePointer(&pointers[j%1000], unsafe.Pointer(uintptr(j)))
|
|
}
|
|
}
|