}
func benchChanToSyscallPing(b *testing.B) {
+ n := b.N
ch := make(chan int)
event, err := createEvent()
if err != nil {
b.Fatal(err)
}
go func() {
- for i := 0; i < b.N; i++ {
+ for i := 0; i < n; i++ {
syscall.WaitForSingleObject(event, syscall.INFINITE)
ch <- 1
}
}()
- for i := 0; i < b.N; i++ {
+ for i := 0; i < n; i++ {
err := setEvent(event)
if err != nil {
b.Fatal(err)
}
func benchSyscallToSyscallPing(b *testing.B) {
+ n := b.N
event1, err := createEvent()
if err != nil {
b.Fatal(err)
b.Fatal(err)
}
go func() {
- for i := 0; i < b.N; i++ {
+ for i := 0; i < n; i++ {
syscall.WaitForSingleObject(event1, syscall.INFINITE)
err := setEvent(event2)
if err != nil {
}
}
}()
- for i := 0; i < b.N; i++ {
+ for i := 0; i < n; i++ {
err := setEvent(event1)
if err != nil {
b.Fatal(err)
}
func benchChanToChanPing(b *testing.B) {
+ n := b.N
ch1 := make(chan int)
ch2 := make(chan int)
go func() {
- for i := 0; i < b.N; i++ {
+ for i := 0; i < n; i++ {
<-ch1
ch2 <- 1
}
}()
- for i := 0; i < b.N; i++ {
+ for i := 0; i < n; i++ {
ch1 <- 1
<-ch2
}