• Lynn Boger's avatar
    bytes: improve performance for bytes.Compare on ppc64x · 1e28dce8
    Lynn Boger authored
    This improves the performance for byte.Compare by rewriting
    the cmpbody function in runtime/asm_ppc64x.s.  The previous code
    had a simple loop which loaded a pair of bytes and compared them,
    which is inefficient for long buffers.  The updated function checks
    for 8 or 32 byte chunks and then loads and compares double words where
    possible.
    
    Because the byte.Compare result indicates greater or less than,
    the doubleword loads must take endianness into account, using a
    byte reversed load in the little endian case.
    
    Fixes #17433
    
    benchmark                                   old ns/op     new ns/op     delta
    BenchmarkBytesCompare/8-16                  13.6          7.16          -47.35%
    BenchmarkBytesCompare/16-16                 25.7          7.83          -69.53%
    BenchmarkBytesCompare/32-16                 38.1          7.78          -79.58%
    BenchmarkBytesCompare/64-16                 63.0          10.6          -83.17%
    BenchmarkBytesCompare/128-16                112           13.0          -88.39%
    BenchmarkBytesCompare/256-16                211           28.1          -86.68%
    BenchmarkBytesCompare/512-16                410           38.6          -90.59%
    BenchmarkBytesCompare/1024-16               807           60.2          -92.54%
    BenchmarkBytesCompare/2048-16               1601          103           -93.57%
    
    Change-Id: I121acc74fcd27c430797647b8d682eb0607c63eb
    Reviewed-on: https://go-review.googlesource.com/30949Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    1e28dce8
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...