From: Bjørn Erik Pedersen Date: Mon, 12 Feb 2018 16:31:37 +0000 (+0100) Subject: parser: Add benchmarks for stringifyYAMLMapKeys X-Git-Tag: v0.37~33 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=51213e0be19fc19dbca9815afa95c73bd6d159c2;p=brevno-suite%2Fhugo 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 ``` --- diff --git a/parser/frontmatter_test.go b/parser/frontmatter_test.go index a7a35fa0..9ac97495 100644 --- a/parser/frontmatter_test.go +++ b/parser/frontmatter_test.go @@ -323,7 +323,7 @@ func TestRemoveTOMLIdentifier(t *testing.T) { func TestStringifyYAMLMapKeys(t *testing.T) { cases := []struct { - input map[interface{}]interface{} + input interface{} want map[string]interface{} }{ { @@ -346,6 +346,10 @@ func TestStringifyYAMLMapKeys(t *testing.T) { 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 BenchmarkFrontmatterTags(b *testing.B) { } } +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"