Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
saiskee committed Mar 18, 2024
1 parent 078e52a commit f88c63a
Show file tree
Hide file tree
Showing 9 changed files with 164 additions and 14 deletions.
8 changes: 6 additions & 2 deletions codegen/test/api/things.test.io/v1/sets/sets.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion contrib/codegen/templates/sets/sets.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,9 @@ func (s *{{ $kindLowerCamel }}MergedSet) Equal(
}

func (s *{{ $kindLowerCamel }}MergedSet) Delete({{ $resource.Kind }} ezkube.ResourceId) {
panic("unimplemented")
for _, set := range s.sets {
set.Delete({{ $resource.Kind }})
}
}

func (s *{{ $kindLowerCamel }}MergedSet) Union(set {{ $resource.Kind }}Set) {{ $resource.Kind }}Set {
Expand Down
122 changes: 122 additions & 0 deletions contrib/pkg/sets/sets_benchmark_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package sets

import (
"fmt"
"testing"

v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1"
"github.com/solo-io/skv2/pkg/ezkube"
)

// Define a global variable to prevent compiler optimizations
var result interface{}

var scale = 10000

// func Benchmark(b *testing.B) {
// b.Run("Resources_Insert", BenchmarkResources_Insert)
// b.Run("Resources_Find", BenchmarkResources_Find)
// // b.Run("Resources_Delete", BenchmarkResources_Delete)
// b.Run("Resources_List", BenchmarkResources_List)
// b.Run("Resources_UnsortedList", BenchmarkResources_UnsortedList)
// }

func BenchmarkResources_Insert(b *testing.B) {
var r Resources
for i := 0; i < b.N; i++ {
r = newResources() // Assume newResources is corrected to initialize correctly

Check failure on line 27 in contrib/pkg/sets/sets_benchmark_test.go

View workflow job for this annotation

GitHub Actions / Tests

cannot use newResources() (value of type *Resources) as Resources value in assignment
for j := 0; j < scale; j++ {
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
r.Insert(resource)
}
}
// Store the result to a package level variable
// so the compiler cannot eliminate the Benchmark itself.
result = r
}

func BenchmarkResources_Find(b *testing.B) {
r := newResources()
for j := 0; j < scale; j++ {
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
r.Insert(resource)
}

b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = r.Find(&v1.TypedObjectRef{}, &v1.ObjectRef{Namespace: "namespace", Name: "name500"})
}
}

func BenchmarkResources_Delete(b *testing.B) {
var r Resources
for i := 0; i < b.N; i++ {
r = newResources()

Check failure on line 54 in contrib/pkg/sets/sets_benchmark_test.go

View workflow job for this annotation

GitHub Actions / Tests

cannot use newResources() (value of type *Resources) as Resources value in assignment
for j := 0; j < scale; j++ {
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
r.Insert(resource)
}
b.ResetTimer()
for j := 0; j < scale; j++ {
r.Delete(&v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)})
}
b.StopTimer()
}
result = r
}

func BenchmarkResources_List(b *testing.B) {
r := newResources()
for j := 0; j < scale; j++ {
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
r.Insert(resource)
}

b.ResetTimer()
var res []ezkube.ResourceId
for i := 0; i < b.N; i++ {
res = r.List()
}
// Store the result to prevent the compiler from optimizing the loop away.
result = res
}

func BenchmarkResources_UnsortedList(b *testing.B) {
r := newResources()
for j := 0; j < scale; j++ {
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
r.Insert(resource)
}

b.ResetTimer()
var res []ezkube.ResourceId
for i := 0; i < b.N; i++ {
res = r.UnsortedList()
}
// Store the result to prevent the compiler from optimizing the loop away.
result = res
}

// func BenchmarkResources_Delta(b *testing.B) {
// // Define the scale for the number of resources in each set.
// const scale = 1000

// // Create and populate the original set with resources.
// originalSet := newResources()
// for i := 0; i < scale; i++ {
// resource := &v1.ObjectRef{Namespace: "namespace", Name: "originalName" + fmt.Sprint(i)}
// originalSet.Insert(resource)
// }

// // Create and populate a new set with some overlapping and some unique resources.
// newSet := newResources()
// for i := scale / 2; i < scale+(scale/2); i++ {
// resource := &v1.ObjectRef{Namespace: "namespace", Name: "newName" + fmt.Sprint(i)}
// newSet.Insert(resource)
// }

// b.ResetTimer() // Start timing the benchmark loop.
// for i := 0; i < b.N; i++ {
// _ = originalSet.Delta(newSet)
// }
// }
4 changes: 3 additions & 1 deletion pkg/api/multicluster.solo.io/v1alpha1/sets/sets.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 9 additions & 3 deletions pkg/multicluster/internal/k8s/core/v1/sets/sets.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f88c63a

Please sign in to comment.