Merge pull request #87896 from apelisse/fieldmanager-benchmark-updatetwice

Add UpdateTwice and UpdateApply benchmarks for fieldmanager

Kubernetes-commit: 87f27638afe7d677dc229a6acf1ea4500d184aef
This commit is contained in:
Kubernetes Publisher 2020-02-07 05:57:56 -08:00
commit 5cb9357550
4 changed files with 35 additions and 12 deletions

2
Godeps/Godeps.json generated
View File

@ -596,7 +596,7 @@
}, },
{ {
"ImportPath": "k8s.io/client-go", "ImportPath": "k8s.io/client-go",
"Rev": "cf84c08bad11" "Rev": "5be5d5753fd2"
}, },
{ {
"ImportPath": "k8s.io/component-base", "ImportPath": "k8s.io/component-base",

4
go.mod
View File

@ -46,7 +46,7 @@ require (
gotest.tools v2.2.0+incompatible // indirect gotest.tools v2.2.0+incompatible // indirect
k8s.io/api v0.0.0-20200207025841-85a41f27a10c k8s.io/api v0.0.0-20200207025841-85a41f27a10c
k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2 k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2
k8s.io/client-go v0.0.0-20200207110052-cf84c08bad11 k8s.io/client-go v0.0.0-20200207150107-5be5d5753fd2
k8s.io/component-base v0.0.0-20200207030544-616550b070ba k8s.io/component-base v0.0.0-20200207030544-616550b070ba
k8s.io/klog v1.0.0 k8s.io/klog v1.0.0
k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c
@ -60,6 +60,6 @@ replace (
golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13
k8s.io/api => k8s.io/api v0.0.0-20200207025841-85a41f27a10c k8s.io/api => k8s.io/api v0.0.0-20200207025841-85a41f27a10c
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2 k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2
k8s.io/client-go => k8s.io/client-go v0.0.0-20200207110052-cf84c08bad11 k8s.io/client-go => k8s.io/client-go v0.0.0-20200207150107-5be5d5753fd2
k8s.io/component-base => k8s.io/component-base v0.0.0-20200207030544-616550b070ba k8s.io/component-base => k8s.io/component-base v0.0.0-20200207030544-616550b070ba
) )

2
go.sum
View File

@ -363,7 +363,7 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
k8s.io/api v0.0.0-20200207025841-85a41f27a10c/go.mod h1:SA5EjO7X3UBpRgCFnqrgyCg0rXvBmN8QpNZ4Bvmv9js= k8s.io/api v0.0.0-20200207025841-85a41f27a10c/go.mod h1:SA5EjO7X3UBpRgCFnqrgyCg0rXvBmN8QpNZ4Bvmv9js=
k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2/go.mod h1:4JiEu5qfVX4iOPJG4zxNOGJ0HamEJ5OmJHxtHMChmZo= k8s.io/apimachinery v0.0.0-20200207025655-52a338251bb2/go.mod h1:4JiEu5qfVX4iOPJG4zxNOGJ0HamEJ5OmJHxtHMChmZo=
k8s.io/client-go v0.0.0-20200207110052-cf84c08bad11/go.mod h1:ourVHU91vVd0R4YiJhW1FNlt3K+HtokZ5ImtcAbqVh4= k8s.io/client-go v0.0.0-20200207150107-5be5d5753fd2/go.mod h1:ourVHU91vVd0R4YiJhW1FNlt3K+HtokZ5ImtcAbqVh4=
k8s.io/component-base v0.0.0-20200207030544-616550b070ba/go.mod h1:xqOLjWJL1P+sXGSeMoLVvN0UM/adtUwVUp/mwh5H518= k8s.io/component-base v0.0.0-20200207030544-616550b070ba/go.mod h1:xqOLjWJL1P+sXGSeMoLVvN0UM/adtUwVUp/mwh5H518=
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=

View File

@ -409,13 +409,28 @@ func BenchmarkNewObject(b *testing.B) {
APIVersion: "v1", APIVersion: "v1",
}, },
}) })
appliedObj := &unstructured.Unstructured{Object: map[string]interface{}{}}
if err := yaml.Unmarshal(test.obj, &appliedObj.Object); err != nil {
b.Fatalf("Failed to parse yaml object: %v", err)
}
b.Run("Update", func(b *testing.B) { b.Run("Update", func(b *testing.B) {
b.ReportAllocs() b.ReportAllocs()
b.ResetTimer() b.ResetTimer()
for n := 0; n < b.N; n++ { for n := 0; n < b.N; n++ {
err := f.Update(newObj, "fieldmanager_test") if err := f.Update(newObj, "fieldmanager_test"); err != nil {
if err != nil { b.Fatal(err)
}
f.Reset()
}
})
b.Run("UpdateTwice", func(b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
for n := 0; n < b.N; n++ {
if err := f.Update(newObj, "fieldmanager_test"); err != nil {
b.Fatal(err)
}
if err := f.Update(newObj, "fieldmanager_test_2"); err != nil {
b.Fatal(err) b.Fatal(err)
} }
f.Reset() f.Reset()
@ -425,12 +440,20 @@ func BenchmarkNewObject(b *testing.B) {
b.ReportAllocs() b.ReportAllocs()
b.ResetTimer() b.ResetTimer()
for n := 0; n < b.N; n++ { for n := 0; n < b.N; n++ {
appliedObj := &unstructured.Unstructured{Object: map[string]interface{}{}} if err := f.Apply(appliedObj, "fieldmanager_test", false); err != nil {
if err := yaml.Unmarshal(test.obj, &appliedObj.Object); err != nil { b.Fatal(err)
b.Fatalf("error decoding YAML: %v", err)
} }
err := f.Apply(appliedObj, "fieldmanager_test", false) f.Reset()
if err != nil { }
})
b.Run("UpdateApply", func(b *testing.B) {
b.ReportAllocs()
b.ResetTimer()
for n := 0; n < b.N; n++ {
if err := f.Update(newObj, "fieldmanager_test"); err != nil {
b.Fatal(err)
}
if err := f.Apply(appliedObj, "fieldmanager_test", false); err != nil {
b.Fatal(err) b.Fatal(err)
} }
f.Reset() f.Reset()