summaryrefslogtreecommitdiff
path: root/set
diff options
context:
space:
mode:
Diffstat (limited to 'set')
-rw-r--r--set/set_test.go33
1 files changed, 32 insertions, 1 deletions
diff --git a/set/set_test.go b/set/set_test.go
index cd44e24..dac258a 100644
--- a/set/set_test.go
+++ b/set/set_test.go
@@ -9,7 +9,10 @@ import (
const factor int = 10
const minLength int = 1
-const maxLength int = 10
+const maxLength int = 10000
+
+// Store results here to avoid compiler optimizations
+var benchResult int
func TestElementary(t *testing.T) {
s := NewElementary()
@@ -44,3 +47,31 @@ func test(s Set, l int, t *testing.T) {
}
t.Run(fmt.Sprintf("%d", l), cb)
}
+
+func BenchmarkElementary(t *testing.B) {
+ s := NewElementary()
+ for i := minLength; i <= maxLength; i *= factor {
+ benchmark(s, i, t)
+ }
+}
+
+func BenchmarkBST(t *testing.B) {
+ s := NewBST()
+ for i := minLength; i <= maxLength; i *= factor {
+ benchmark(s, i, t)
+ }
+}
+
+func benchmark(s Set, l int, b *testing.B) {
+ list := ds.NewRandomArrayList(l, -1)
+
+ b.Run(fmt.Sprintf("random(%d)", l), func(b *testing.B) {
+ b.ResetTimer()
+ for i, a := range list {
+ s.Set(a, i)
+ }
+ for _, a := range list {
+ benchResult, _ = s.Get(a)
+ }
+ })
+}