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