From 1db60ee0c7c7a6d8a5247bbca775c134645b771c Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 10 Nov 2020 21:25:54 +0000 Subject: Add set benchmarking --- set/set_test.go | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) 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) + } + }) +} -- cgit v1.2.3