-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
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 | ||
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() | ||
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) | ||
// } | ||
// } |
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.
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.