gf/os/gmutex/gmutex_bench_test.go

86 lines
1.4 KiB
Go

// Copyright 2019 gf Author(https://github.com/gogf/gf). All Rights Reserved.
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package gmutex_test
import (
"sync"
"testing"
"github.com/gogf/gf/os/gmutex"
)
var (
mu = sync.Mutex{}
rwmu = sync.RWMutex{}
gmu = gmutex.New()
)
func Benchmark_Mutex_LockUnlock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
mu.Lock()
mu.Unlock()
}
})
}
func Benchmark_RWMutex_LockUnlock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
rwmu.Lock()
rwmu.Unlock()
}
})
}
func Benchmark_RWMutex_RLockRUnlock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
rwmu.RLock()
rwmu.RUnlock()
}
})
}
func Benchmark_GMutex_LockUnlock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
gmu.Lock()
gmu.Unlock()
}
})
}
func Benchmark_GMutex_TryLock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
if gmu.TryLock() {
gmu.Unlock()
}
}
})
}
func Benchmark_GMutex_RLockRUnlock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
gmu.RLock()
gmu.RUnlock()
}
})
}
func Benchmark_GMutex_TryRLock(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
if gmu.TryRLock() {
gmu.RUnlock()
}
}
})
}