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  }