Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "errors"
- "sync"
- "testing"
- )
- func BenchmarkChannel(b *testing.B) {
- ch := make(chan error, 1)
- for i := 0; i < b.N; i++ {
- wg := sync.WaitGroup{}
- wg.Add(16)
- err := errors.New("unknown error")
- for i := 0; i < 16; i++ {
- go func() {
- defer wg.Done()
- select {
- case ch <- err:
- default:
- }
- }()
- }
- wg.Wait()
- }
- }
- func BenchmarkMutex(b *testing.B) {
- var firstError error
- var mutex sync.Mutex
- for i := 0; i < b.N; i++ {
- wg := sync.WaitGroup{}
- wg.Add(16)
- err := errors.New("unknown error")
- for i := 0; i < 16; i++ {
- go func() {
- defer wg.Done()
- mutex.Lock()
- defer mutex.Unlock()
- if firstError == nil {
- firstError = err
- }
- }()
- }
- wg.Wait()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement