github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/clist/bench_test.go (about) 1 package clist 2 3 import "testing" 4 5 func BenchmarkDetaching(b *testing.B) { 6 if testing.Short() { 7 b.Skip("skipping testing in short mode") 8 } 9 10 lst := New() 11 for i := 0; i < b.N+1; i++ { 12 lst.PushBack(i) 13 } 14 start := lst.Front() 15 nxt := start.Next() 16 b.ResetTimer() 17 for i := 0; i < b.N; i++ { 18 start.removed = true 19 start.DetachNext() 20 start.DetachPrev() 21 tmp := nxt 22 nxt = nxt.Next() 23 start = tmp 24 } 25 } 26 27 // This is used to benchmark the time of RMutex. 28 func BenchmarkRemoved(b *testing.B) { 29 if testing.Short() { 30 b.Skip("skipping testing in short mode") 31 } 32 33 lst := New() 34 for i := 0; i < b.N+1; i++ { 35 lst.PushBack(i) 36 } 37 start := lst.Front() 38 nxt := start.Next() 39 b.ResetTimer() 40 for i := 0; i < b.N; i++ { 41 start.Removed() 42 tmp := nxt 43 nxt = nxt.Next() 44 start = tmp 45 } 46 } 47 48 func BenchmarkPushBack(b *testing.B) { 49 lst := New() 50 b.ResetTimer() 51 for i := 0; i < b.N; i++ { 52 lst.PushBack(i) 53 } 54 }