mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-08 03:33:56 +00:00
Merge pull request #78688 from nikhita/yaml-benchmark
Add benchmarks for yaml marshaling and unmarshaling
This commit is contained in:
commit
2e13dfa575
@ -112,5 +112,6 @@ go_test(
|
|||||||
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
|
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
|
||||||
"//vendor/github.com/google/gofuzz:go_default_library",
|
"//vendor/github.com/google/gofuzz:go_default_library",
|
||||||
"//vendor/github.com/json-iterator/go:go_default_library",
|
"//vendor/github.com/json-iterator/go:go_default_library",
|
||||||
|
"//vendor/sigs.k8s.io/yaml:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -47,6 +47,7 @@ import (
|
|||||||
k8s_apps_v1 "k8s.io/kubernetes/pkg/apis/apps/v1"
|
k8s_apps_v1 "k8s.io/kubernetes/pkg/apis/apps/v1"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
|
||||||
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
// fuzzInternalObject fuzzes an arbitrary runtime object using the appropriate
|
// fuzzInternalObject fuzzes an arbitrary runtime object using the appropriate
|
||||||
@ -634,3 +635,40 @@ func BenchmarkDecodeIntoJSONCodecGenConfigCompatibleWithStandardLibrary(b *testi
|
|||||||
}
|
}
|
||||||
b.StopTimer()
|
b.StopTimer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BenchmarkEncodeYAMLMarshal provides a baseline for regular YAML encode performance
|
||||||
|
func BenchmarkEncodeYAMLMarshal(b *testing.B) {
|
||||||
|
items := benchmarkItems(b)
|
||||||
|
width := len(items)
|
||||||
|
b.ResetTimer()
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
if _, err := yaml.Marshal(&items[i%width]); err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.StopTimer()
|
||||||
|
}
|
||||||
|
|
||||||
|
// BenchmarkDecodeYAML provides a baseline for regular YAML decode performance
|
||||||
|
func BenchmarkDecodeIntoYAML(b *testing.B) {
|
||||||
|
codec := testapi.Default.Codec()
|
||||||
|
items := benchmarkItems(b)
|
||||||
|
width := len(items)
|
||||||
|
encoded := make([][]byte, width)
|
||||||
|
for i := range items {
|
||||||
|
data, err := runtime.Encode(codec, &items[i])
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
encoded[i] = data
|
||||||
|
}
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
obj := v1.Pod{}
|
||||||
|
if err := yaml.Unmarshal(encoded[i%width], &obj); err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.StopTimer()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user