github.com/ngicks/gokugen@v0.0.5/scheduler/queue_bench_test.go (about) 1 package scheduler_test 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/ngicks/gokugen/scheduler" 9 ) 10 11 func emptyWork(taskCtx context.Context, scheduled time.Time) {} 12 13 func BenchmarkQueue_RemoveCancelled_1000_allCancelled(b *testing.B) { 14 b.StopTimer() 15 q := scheduler.NewSyncQueue(0) 16 now := time.Now() 17 for i := 0; i < 1000; i++ { 18 t := scheduler.NewTask(now, emptyWork) 19 t.Cancel() 20 q.Push(t) 21 } 22 q.Push(scheduler.NewTask(now.Add(-1*time.Second), emptyWork)) 23 24 b.StartTimer() 25 q.Exclude(func(ent *scheduler.Task) bool { 26 return ent.IsCancelled() 27 }, 0, 1000+1) 28 } 29 func BenchmarkQueue_RemoveCancelled_10000_halfCancelled(b *testing.B) { 30 b.StopTimer() 31 q := scheduler.NewSyncQueue(0) 32 now := time.Now() 33 for i := 0; i < 10000; i++ { 34 t := scheduler.NewTask(now, emptyWork) 35 if i < 10000/2 { 36 t.Cancel() 37 } 38 q.Push(t) 39 } 40 q.Push(scheduler.NewTask(now.Add(-1*time.Second), emptyWork)) 41 42 b.StartTimer() 43 q.Exclude(func(ent *scheduler.Task) bool { 44 return ent.IsCancelled() 45 }, 0, 10000+1) 46 } 47 48 func BenchmarkQueue_RemoveCancelled_100000_halfCancelled(b *testing.B) { 49 b.StopTimer() 50 q := scheduler.NewSyncQueue(0) 51 now := time.Now() 52 for i := 0; i < 100000; i++ { 53 t := scheduler.NewTask(now, emptyWork) 54 if i < 100000/2 { 55 t.Cancel() 56 } 57 q.Push(t) 58 } 59 q.Push(scheduler.NewTask(now.Add(-1*time.Second), emptyWork)) 60 61 b.StartTimer() 62 q.Exclude(func(ent *scheduler.Task) bool { 63 return ent.IsCancelled() 64 }, 0, 100000+1) 65 } 66 67 func BenchmarkQueue_RemoveCancelled_100000_oneCancelled(b *testing.B) { 68 b.StopTimer() 69 q := scheduler.NewSyncQueue(0) 70 now := time.Now() 71 for i := 0; i < 100000; i++ { 72 t := scheduler.NewTask(now, emptyWork) 73 q.Push(t) 74 } 75 t := scheduler.NewTask(now.Add(-1*time.Second), emptyWork) 76 t.Cancel() 77 q.Push(t) 78 79 b.StartTimer() 80 q.Exclude(func(ent *scheduler.Task) bool { 81 return ent.IsCancelled() 82 }, 0, 100000+1) 83 }