diff options
Diffstat (limited to 'src/runtime/map_benchmark_test.go')
| -rw-r--r-- | src/runtime/map_benchmark_test.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/runtime/map_benchmark_test.go b/src/runtime/map_benchmark_test.go index bf195fa30d..a26b35b44d 100644 --- a/src/runtime/map_benchmark_test.go +++ b/src/runtime/map_benchmark_test.go @@ -1191,3 +1191,39 @@ func BenchmarkMapSmallAccessMiss(b *testing.B) { b.Run("Key=string/Elem=string", smallBenchSizes(benchmarkMapAccessMiss[string, string])) b.Run("Key=smallType/Elem=int32", smallBenchSizes(benchmarkMapAccessMiss[smallType, int32])) } + +func mapAccessZeroBenchmark[K comparable](b *testing.B) { + var m map[K]uint64 + var key K + for i := 0; i < b.N; i++ { + sink = m[key] + } +} + +func BenchmarkMapAccessZero(b *testing.B) { + b.Run("Key=int64", mapAccessZeroBenchmark[int64]) + b.Run("Key=int32", mapAccessZeroBenchmark[int32]) + b.Run("Key=string", mapAccessZeroBenchmark[string]) + b.Run("Key=mediumType", mapAccessZeroBenchmark[mediumType]) + b.Run("Key=bigType", mapAccessZeroBenchmark[bigType]) +} + +func mapAccessEmptyBenchmark[K mapBenchmarkKeyType](b *testing.B) { + m := make(map[K]uint64) + for i, v := range genValues[K](0, 1000) { + m[v] = uint64(i) + } + clear(m) + var key K + for i := 0; i < b.N; i++ { + sink = m[key] + } +} + +func BenchmarkMapAccessEmpty(b *testing.B) { + b.Run("Key=int64", mapAccessEmptyBenchmark[int64]) + b.Run("Key=int32", mapAccessEmptyBenchmark[int32]) + b.Run("Key=string", mapAccessEmptyBenchmark[string]) + b.Run("Key=mediumType", mapAccessEmptyBenchmark[mediumType]) + b.Run("Key=bigType", mapAccessEmptyBenchmark[bigType]) +} |
