• Keith Randall's avatar
    runtime: a better fallback hash · cda0ea1c
    Keith Randall authored
    For arm and powerpc, as well as x86 without aes instructions.
    Contains a mixture of ideas from cityhash and xxhash.
    
    Compared to our old fallback on ARM, it's ~no slower on
    small objects and up to ~50% faster on large objects.  More
    importantly, it is a much better hash function and thus has
    less chance of bad behavior.
    
    Fixes #8737
    
    benchmark                         old ns/op     new ns/op     delta
    BenchmarkHash5                    173           181           +4.62%
    BenchmarkHash16                   252           212           -15.87%
    BenchmarkHash64                   575           419           -27.13%
    BenchmarkHash1024                 7173          3995          -44.31%
    BenchmarkHash65536                516940        313173        -39.42%
    BenchmarkHashStringSpeed          300           279           -7.00%
    BenchmarkHashBytesSpeed           478           424           -11.30%
    BenchmarkHashInt32Speed           217           207           -4.61%
    BenchmarkHashInt64Speed           262           231           -11.83%
    BenchmarkHashStringArraySpeed     609           631           +3.61%
    
    Change-Id: I0a9335028f32b10ad484966e3019987973afd3eb
    Reviewed-on: https://go-review.googlesource.com/1360Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    cda0ea1c
alg.go 8.12 KB