From: Eric Eisner Date: Fri, 23 Sep 2011 16:18:10 +0000 (-0700) Subject: suffixarray: add benchmarks for construction X-Git-Tag: weekly.2011-10-06~110 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=481e619c50219fda4118f644e966d1bbb0cd82c7;p=gostls13.git suffixarray: add benchmarks for construction R=gri, jeff CC=golang-dev https://golang.org/cl/5040048 --- diff --git a/src/pkg/index/suffixarray/suffixarray_test.go b/src/pkg/index/suffixarray/suffixarray_test.go index 9b4d89f42e..aeac9770c4 100644 --- a/src/pkg/index/suffixarray/suffixarray_test.go +++ b/src/pkg/index/suffixarray/suffixarray_test.go @@ -257,6 +257,30 @@ func TestIndex(t *testing.T) { } } +// Of all possible inputs, the random bytes have the least amount of substring +// repetition, and the repeated bytes have the most. For most algorithms, +// the running time of every input will be between these two. +func benchmarkNew(b *testing.B, random bool) { + b.StopTimer() + data := make([]byte, 1e6) + if random { + for i := range data { + data[i] = byte(rand.Intn(256)) + } + } + b.StartTimer() + for i := 0; i < b.N; i++ { + New(data) + } +} + +func BenchmarkNewIndexRandom(b *testing.B) { + benchmarkNew(b, true) +} +func BenchmarkNewIndexRepeat(b *testing.B) { + benchmarkNew(b, false) +} + func BenchmarkSaveRestore(b *testing.B) { b.StopTimer() r := rand.New(rand.NewSource(0x5a77a1)) // guarantee always same sequence