34 lines
461 B
Go
34 lines
461 B
Go
package main
|
|
|
|
import (
|
|
"sync"
|
|
"sync/atomic"
|
|
"testing"
|
|
)
|
|
|
|
// go test -bench=. perf_test.go
|
|
|
|
func BenchmarkMutexAdd(b *testing.B) {
|
|
var number int32
|
|
var mutex sync.Mutex
|
|
for i := 0; i < b.N; i++ {
|
|
mutex.Lock()
|
|
number++
|
|
mutex.Unlock()
|
|
}
|
|
}
|
|
|
|
func BenchmarkAtomicAdd(b *testing.B) {
|
|
var number atomic.Int32
|
|
for i := 0; i < b.N; i++ {
|
|
number.Add(1)
|
|
}
|
|
}
|
|
|
|
func BenchmarkAdd(b *testing.B) {
|
|
var number int32
|
|
for i := 0; i < b.N; i++ {
|
|
number++
|
|
}
|
|
}
|