benchmark_channels.go 540 B

1234567891011121314151617181920212223242526272829303132333435
  1. package main
  2. import (
  3. "fmt"
  4. "testing"
  5. )
  6. func main() {
  7. fmt.Println(" sync", testing.Benchmark(BenchmarkChannelSync).String())
  8. fmt.Println("buffered", testing.Benchmark(BenchmarkChannelBuffered).String())
  9. }
  10. func BenchmarkChannelSync(b *testing.B) {
  11. ch := make(chan int)
  12. go func() {
  13. for i := 0; i < b.N; i++ {
  14. ch <- i
  15. }
  16. close(ch)
  17. }()
  18. for range ch {
  19. }
  20. }
  21. func BenchmarkChannelBuffered(b *testing.B) {
  22. ch := make(chan int, 128)
  23. go func() {
  24. for i := 0; i < b.N; i++ {
  25. ch <- i
  26. }
  27. close(ch)
  28. }()
  29. for range ch {
  30. }
  31. }