]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: add benchmark for LastIndex
authorTobias Klauser <tklauser@distanz.ch>
Fri, 8 Mar 2019 10:36:31 +0000 (11:36 +0100)
committerTobias Klauser <tobias.klauser@gmail.com>
Fri, 8 Mar 2019 13:46:34 +0000 (13:46 +0000)
Add BenchmarkLastIndexHard[1-3] in preparation for implementing
LastIndex using Rabin-Karp akin to strings.LastIndex

BenchmarkLastIndexHard1-8         500    3162694 ns/op
BenchmarkLastIndexHard2-8         500    3170475 ns/op
BenchmarkLastIndexHard3-8         500    3051127 ns/op

Change-Id: Id99f85f9640e248958f2b4be4dfd8c974e3b50e7
Reviewed-on: https://go-review.googlesource.com/c/go/+/166257
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/bytes/bytes_test.go

index f4c0ffd2a91f7d709e2417a45e80e08a70f5c36e..80a54f6118b199046382c7f2540fd37b746956e0 100644 (file)
@@ -1642,6 +1642,16 @@ func makeBenchInputHard() []byte {
 
 var benchInputHard = makeBenchInputHard()
 
+func benchmarkLastIndexHard(b *testing.B, sep []byte) {
+       for i := 0; i < b.N; i++ {
+               LastIndex(benchInputHard, sep)
+       }
+}
+
+func BenchmarkLastIndexHard1(b *testing.B) { benchmarkLastIndexHard(b, []byte("<>")) }
+func BenchmarkLastIndexHard2(b *testing.B) { benchmarkLastIndexHard(b, []byte("</pre>")) }
+func BenchmarkLastIndexHard3(b *testing.B) { benchmarkLastIndexHard(b, []byte("<b>hello world</b>")) }
+
 func BenchmarkSplitEmptySeparator(b *testing.B) {
        for i := 0; i < b.N; i++ {
                Split(benchInputHard, nil)