ref: 51213e0be19fc19dbca9815afa95c73bd6d159c2
parent: 1fa2417777d82b81bf37919ad02de4f5dcbf0d50
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Mon Feb 12 12:31:37 EST 2018
parser: Add benchmarks for stringifyYAMLMapKeys ```bash BenchmarkStringifyMapKeysStringsOnlyInterfaceMaps-4 500000 3269 ns/op 1080 B/op 16 allocs/op BenchmarkStringifyMapKeysStringsOnlyStringMaps-4 300000000 4.79 ns/op 0 B/op 0 allocs/op BenchmarkStringifyMapKeysIntegers-4 500000 2707 ns/op 1080 B/op 16 allocs/op ```
--- a/parser/frontmatter_test.go
+++ b/parser/frontmatter_test.go
@@ -323,7 +323,7 @@
func TestStringifyYAMLMapKeys(t *testing.T) { cases := []struct {- input map[interface{}]interface{}+ input interface{} want map[string]interface{} }{ {@@ -346,6 +346,10 @@
map[interface{}]interface{}{"a": map[interface{}]interface{}{"b": 1}}, map[string]interface{}{"a": map[string]interface{}{"b": 1}},},
+ {+ map[string]interface{}{"a": map[string]interface{}{"b": 1}},+ map[string]interface{}{"a": map[string]interface{}{"b": 1}},+ },
}
for i, c := range cases {@@ -365,6 +369,69 @@
}
}
+func BenchmarkStringifyMapKeysStringsOnlyInterfaceMaps(b *testing.B) {+ maps := make([]map[interface{}]interface{}, b.N)+ for i := 0; i < b.N; i++ {+ maps[i] = map[interface{}]interface{}{+ "a": map[interface{}]interface{}{+ "b": 32,
+ "c": 43,
+ "d": map[interface{}]interface{}{+ "b": 32,
+ "c": 43,
+ },
+ },
+ "b": []interface{}{"a", "b"},+ "c": "d",
+ }
+ }
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {+ stringifyYAMLMapKeys(maps[i])
+ }
+}
+
+func BenchmarkStringifyMapKeysStringsOnlyStringMaps(b *testing.B) {+ m := map[string]interface{}{+ "a": map[string]interface{}{+ "b": 32,
+ "c": 43,
+ "d": map[string]interface{}{+ "b": 32,
+ "c": 43,
+ },
+ },
+ "b": []interface{}{"a", "b"},+ "c": "d",
+ }
+
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {+ stringifyYAMLMapKeys(m)
+ }
+}
+
+func BenchmarkStringifyMapKeysIntegers(b *testing.B) {+ maps := make([]map[interface{}]interface{}, b.N)+ for i := 0; i < b.N; i++ {+ maps[i] = map[interface{}]interface{}{+ 1: map[interface{}]interface{}{+ 4: 32,
+ 5: 43,
+ 6: map[interface{}]interface{}{+ 7: 32,
+ 8: 43,
+ },
+ },
+ 2: []interface{}{"a", "b"},+ 3: "d",
+ }
+ }
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {+ stringifyYAMLMapKeys(maps[i])
+ }
+}
func doBenchmarkFrontmatter(b *testing.B, fileformat string, numTags int) {yamlTemplate := `---
name: "Tags"
--
⑨