This benchmark with single channel only take 2.545 ns/op:
func BenchmarkSingleSelect(b *testing.B) {
ch := make(chan interface{}, 1)
for i := 0; i < b.N; i++ {
select {
case <-ch:
default:
}
}
}
But this benchmark with two channel takes 35.85 ns/op:
func BenchmarkMultiSelect(b *testing.B) {
ch := make(chan interface{}, 1)
ch2 := make(chan interface{}, 1)
for i := 0; i < b.N; i++ {
select {
case <-ch:
case <-ch2:
default:
}
}
}
Why is it non-linear?