1
0
mirror of https://github.com/golang/go synced 2024-11-19 16:44:43 -07:00

bytes: reduce work in IndexNearPageBoundary test

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>
This commit is contained in:
Keith Randall 2017-11-03 21:57:08 -07:00 committed by Russ Cox
parent 33a9f01729
commit 936b977c17

View 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 {