github.com/jmigpin/editor@v1.6.0/util/syncutil/waitforset_test.go (about) 1 package syncutil 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/jmigpin/editor/util/chanutil" 8 ) 9 10 func BenchmarkWaitForSet(b *testing.B) { 11 for i := 0; i < b.N; i++ { 12 waitForSet1(b) 13 } 14 } 15 func waitForSet1(b *testing.B) { 16 for i := 0; i < 1000; i++ { 17 u := NewWaitForSet() 18 u.Start(50 * time.Millisecond) 19 go func() { 20 if err := u.Set(i); err != nil { 21 b.Log(err) 22 } 23 }() 24 _, err := u.WaitForSet() 25 if err != nil { 26 b.Log(err) 27 } 28 } 29 } 30 31 //---------- 32 33 func BenchmarkNBChan(b *testing.B) { 34 for i := 0; i < b.N; i++ { 35 bNBChan(b) 36 } 37 } 38 func bNBChan(b *testing.B) { 39 for i := 0; i < 1000; i++ { 40 u := chanutil.NewNBChan2(1, "") 41 go func() { 42 if err := u.Send(i); err != nil { 43 b.Log(err) 44 } 45 }() 46 _, err := u.Receive(50 * time.Millisecond) 47 if err != nil { 48 b.Log(err) 49 } 50 } 51 }