• Keith Randall's avatar
    runtime: faster aeshash implementation · 7a4a64e8
    Keith Randall authored
    The aesenc instruction has high latency.  For hashing large objects,
    hash several streams in parallel.
    
    benchmark                         old ns/op     new ns/op     delta
    BenchmarkHash5                    7.02          7.45          +6.13%
    BenchmarkHash16                   6.53          6.94          +6.28%
    BenchmarkHash32                   8.38          8.26          -1.43%
    BenchmarkHash64                   12.6          12.0          -4.76%
    BenchmarkHash1024                 247           62.9          -74.53%
    BenchmarkHash65536                17335         2966          -82.89%
    BenchmarkHashInt32Speed           14.7          14.9          +1.36%
    BenchmarkHashInt64Speed           14.6          14.9          +2.05%
    BenchmarkHashBytesSpeed           35.4          28.6          -19.21%
    BenchmarkHashStringSpeed          22.0          20.4          -7.27%
    BenchmarkHashStringArraySpeed     65.8          56.3          -14.44%
    
    Change-Id: Ia8ba03063acc64a9066b8ab2d79f2c9aaac1770f
    Reviewed-on: https://go-review.googlesource.com/1330Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    7a4a64e8
asm_amd64.s 44.4 KB