(b *testing.B)
| 87 | } |
| 88 | |
| 89 | func BenchmarkLoadingCacheCapped_MultiThread(b *testing.B) { |
| 90 | rand.Seed(benchLoadingCacheRandSeed) |
| 91 | c := NewLoadingCache( |
| 92 | func(key interface{}) (interface{}, error) { |
| 93 | return key, nil |
| 94 | }, benchLoadingCacheCap) |
| 95 | errCh := make(chan error, benchLoadingCacheConcurrency) |
| 96 | defer close(errCh) |
| 97 | for i := 0; i < benchLoadingCacheConcurrency; i++ { |
| 98 | go func() { |
| 99 | for j := 0; j < b.N; j++ { |
| 100 | k := rand.Intn(benchLoadingCacheKeyRange) |
| 101 | v, _ := c.get(k) |
| 102 | if k != v { |
| 103 | errCh <- fmt.Errorf("key:%q != value:%q", k, v) |
| 104 | return |
| 105 | } |
| 106 | } |
| 107 | errCh <- nil |
| 108 | return |
| 109 | }() |
| 110 | } |
| 111 | for i := 0; i < benchLoadingCacheConcurrency; i++ { |
| 112 | if err := <-errCh; err != nil { |
| 113 | b.Fatal(err) |
| 114 | } |
| 115 | } |
| 116 | |
| 117 | b.Logf("N=%d, concurrency=%d, reset=%d", b.N, benchLoadingCacheConcurrency, c.reset) |
| 118 | } |
| 119 | |
| 120 | func BenchmarkLoadingCacheNoCap_SingleThread(b *testing.B) { |
| 121 | rand.Seed(benchLoadingCacheRandSeed) |
nothing calls this directly
no test coverage detected
searching dependent graphs…