]> Cypherpunks repositories - gostls13.git/commitdiff
bytes: reduce work in IndexNearPageBoundary test
authorKeith Randall <keithr@alum.mit.edu>
Sat, 4 Nov 2017 04:57:08 +0000 (21:57 -0700)
committerRuss Cox <rsc@golang.org>
Sat, 4 Nov 2017 11:09:49 +0000 (11:09 +0000)
This test was taking too long on ppc64x.
There were a few reasons.

The first is that the page size on ppc64x is 64k instead of 4k.
That's 16x more work.

The second is that the generic Index is pretty bad in this case.
It first calls IndexByte which does a bunch of setup work only to find
the byte we're looking for at index 0.  Then it calls Equal which
has to look at the whole string to find a difference on the last byte.

To fix, just limit our attention to near the end of the page.

Change-Id: I6b8bcbb94652a2da853862acc23803def0c49303
Reviewed-on: https://go-review.googlesource.com/76050
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
src/bytes/boundary_test.go

index f9e20e36c75f9d1343720165be31e8f6caf65758..ea84f1e40fd856d3f2a173e83fc965c89ffcc00d 100644 (file)
@@ -67,6 +67,10 @@ func TestIndexNearPageBoundary(t *testing.T) {
        t.Parallel()
        var q [64]byte
        b := dangerousSlice(t)
+       if len(b) > 256 {
+               // Only worry about when we're near the end of a page.
+               b = b[len(b)-256:]
+       }
        for j := 1; j < len(q); j++ {
                q[j-1] = 1 // difference is only found on the last byte
                for i := range b {