]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: add hard benchmarks for Index and Count
authorTobias Klauser <tklauser@distanz.ch>
Fri, 15 Mar 2019 10:29:03 +0000 (11:29 +0100)
committerTobias Klauser <tobias.klauser@gmail.com>
Fri, 15 Mar 2019 14:04:37 +0000 (14:04 +0000)
Add Benchmark(Index|Count)Hard[1-3] in preparation for implementing
Index and Count in assembly on arm.

Updates #29001

Change-Id: I2a9701892190e8d91de069c2f5a7f5bd3544c6c2
Reviewed-on: https://go-review.googlesource.com/c/go/+/167798
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/bytes/bytes_test.go

index 98ba95009d40ea8bd64529adca377d1c6649ddfe..d508fc98954f0cc9bf1e3fdb3705432b610e2a4c 100644 (file)
@@ -1654,16 +1654,39 @@ func makeBenchInputHard() []byte {
 
 var benchInputHard = makeBenchInputHard()
 
+func benchmarkIndexHard(b *testing.B, sep []byte) {
+       for i := 0; i < b.N; i++ {
+               Index(benchInputHard, sep)
+       }
+}
+
 func benchmarkLastIndexHard(b *testing.B, sep []byte) {
        for i := 0; i < b.N; i++ {
                LastIndex(benchInputHard, sep)
        }
 }
 
+func benchmarkCountHard(b *testing.B, sep []byte) {
+       for i := 0; i < b.N; i++ {
+               Count(benchInputHard, sep)
+       }
+}
+
+func BenchmarkIndexHard1(b *testing.B) { benchmarkIndexHard(b, []byte("<>")) }
+func BenchmarkIndexHard2(b *testing.B) { benchmarkIndexHard(b, []byte("</pre>")) }
+func BenchmarkIndexHard3(b *testing.B) { benchmarkIndexHard(b, []byte("<b>hello world</b>")) }
+func BenchmarkIndexHard4(b *testing.B) {
+       benchmarkIndexHard(b, []byte("<pre><b>hello</b><strong>world</strong></pre>"))
+}
+
 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 BenchmarkCountHard1(b *testing.B) { benchmarkCountHard(b, []byte("<>")) }
+func BenchmarkCountHard2(b *testing.B) { benchmarkCountHard(b, []byte("</pre>")) }
+func BenchmarkCountHard3(b *testing.B) { benchmarkCountHard(b, []byte("<b>hello world</b>")) }
+
 func BenchmarkSplitEmptySeparator(b *testing.B) {
        for i := 0; i < b.N; i++ {
                Split(benchInputHard, nil)