]> Cypherpunks repositories - gostls13.git/commitdiff
suffixarray: add benchmarks for construction
authorEric Eisner <eric.d.eisner@gmail.com>
Fri, 23 Sep 2011 16:18:10 +0000 (09:18 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 23 Sep 2011 16:18:10 +0000 (09:18 -0700)
R=gri, jeff
CC=golang-dev
https://golang.org/cl/5040048

src/pkg/index/suffixarray/suffixarray_test.go

index 9b4d89f42e498ec8209d79de2175412a949263fc..aeac9770c4781ac4f7318c90c90f6f6c95f6638e 100644 (file)
@@ -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