github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/cache/bench_test.go (about) 1 package cache_test 2 3 import ( 4 "github.com/unionj-cloud/go-doudou/v2/toolkit/cache" 5 "strings" 6 "testing" 7 8 ) 9 10 func BenchmarkOnce(b *testing.B) { 11 mycache := newCacheWithLocal(newRing()) 12 obj := &Object{ 13 Str: strings.Repeat("my very large string", 10), 14 Num: 42, 15 } 16 17 b.ResetTimer() 18 19 b.RunParallel(func(pb *testing.PB) { 20 for pb.Next() { 21 var dst Object 22 err := mycache.Once(&cache.Item{ 23 Key: "bench-once", 24 Value: &dst, 25 Do: func(*cache.Item) (interface{}, error) { 26 return obj, nil 27 }, 28 }) 29 if err != nil { 30 b.Fatal(err) 31 } 32 if dst.Num != 42 { 33 b.Fatalf("%d != 42", dst.Num) 34 } 35 } 36 }) 37 } 38 39 func BenchmarkSet(b *testing.B) { 40 mycache := newCacheWithLocal(newRing()) 41 obj := &Object{ 42 Str: strings.Repeat("my very large string", 10), 43 Num: 42, 44 } 45 46 b.ResetTimer() 47 48 b.RunParallel(func(pb *testing.PB) { 49 for pb.Next() { 50 if err := mycache.Set(&cache.Item{ 51 Key: "bench-set", 52 Value: obj, 53 }); err != nil { 54 b.Fatal(err) 55 } 56 } 57 }) 58 }