mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:34:15 +08:00
36 lines
540 B
Go
36 lines
540 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func main() {
|
|
fmt.Println(" sync", testing.Benchmark(BenchmarkChannelSync).String())
|
|
fmt.Println("buffered", testing.Benchmark(BenchmarkChannelBuffered).String())
|
|
}
|
|
|
|
func BenchmarkChannelSync(b *testing.B) {
|
|
ch := make(chan int)
|
|
go func() {
|
|
for i := 0; i < b.N; i++ {
|
|
ch <- i
|
|
}
|
|
close(ch)
|
|
}()
|
|
for range ch {
|
|
}
|
|
}
|
|
|
|
func BenchmarkChannelBuffered(b *testing.B) {
|
|
ch := make(chan int, 128)
|
|
go func() {
|
|
for i := 0; i < b.N; i++ {
|
|
ch <- i
|
|
}
|
|
close(ch)
|
|
}()
|
|
for range ch {
|
|
}
|
|
}
|