Skip to content

Instantly share code, notes, and snippets.

@inotnako
Last active January 14, 2017 12:20
Show Gist options
  • Save inotnako/e2b36ae55e46d5f48bef3e67daab0394 to your computer and use it in GitHub Desktop.
Save inotnako/e2b36ae55e46d5f48bef3e67daab0394 to your computer and use it in GitHub Desktop.
benchmark of channels go1.8rc1
package benchs
import (
"runtime"
"sync"
"testing"
)
func Benchmark_Channel_Parallel(b *testing.B) {
cpu := runtime.GOMAXPROCS(-1)
trafic := make(chan *struct{}, cpu)
wg := &sync.WaitGroup{}
wg.Add(cpu)
for i := 0; i < cpu; i++ {
go func() {
wg.Done()
for _ = range trafic {
}
}()
}
obj := &struct{}{}
wg.Wait()
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
trafic <- obj
}
})
close(trafic)
}
func Benchmark_Channel(b *testing.B) {
cpu := runtime.GOMAXPROCS(-1)
trafic := make(chan *struct{}, cpu)
wg := &sync.WaitGroup{}
wg.Add(cpu)
for i := 0; i < cpu; i++ {
go func() {
wg.Done()
for _ = range trafic {
}
}()
}
obj := &struct{}{}
wg.Wait()
b.ResetTimer()
for i := 0; i < b.N; i++ {
trafic <- obj
}
close(trafic)
}
/*
MacBook Pro 4 CPU 2,4 GHz Intel Core i5 4 ГБ 1600 МГц DDR3
$ go test -bench=. -run=. -benchtime=1s -benchmem ./benchs/ -cpu=4,8,16,32 -count=10
Benchmark_Channel_Parallel-4 5000000 327 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 366 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 365 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 319 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 366 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 354 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 367 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 367 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 337 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-4 5000000 366 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 308 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 308 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 310 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 307 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 308 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 310 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 309 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 312 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 308 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-8 5000000 308 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 255 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 262 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 262 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 264 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 261 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 261 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 254 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 263 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 263 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-16 5000000 261 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 226 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 228 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 227 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 221 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 233 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 221 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 223 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 230 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 227 ns/op 0 B/op 0 allocs/op
Benchmark_Channel_Parallel-32 10000000 225 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 10000000 236 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 5000000 213 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 5000000 354 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 10000000 248 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 5000000 345 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 5000000 347 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 5000000 251 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 10000000 233 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 10000000 283 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-4 10000000 244 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 251 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 10000000 236 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 248 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 10000000 271 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 269 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 258 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 282 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 259 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 298 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-8 5000000 288 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 346 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 358 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 336 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 287 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 343 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 342 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 323 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 360 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 349 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-16 5000000 350 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 492 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 427 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 451 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 386 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 461 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 500 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 501 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 533 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 507 ns/op 0 B/op 0 allocs/op
Benchmark_Channel-32 3000000 492 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/antonikonovalov/nn/benchs 161.638s
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment