runtime: add runtime.cmpstring and bytes.Compare
Update #10007
Implement runtime.cmpstring and bytes.Compare in asm for arm.
benchmark old ns/op new ns/op delta
BenchmarkCompareBytesEqual 254 91.4 -64.02%
BenchmarkCompareBytesToNil 41.5 37.6 -9.40%
BenchmarkCompareBytesEmpty 40.7 37.6 -7.62%
BenchmarkCompareBytesIdentical 255 96.3 -62.24%
BenchmarkCompareBytesSameLength 125 60.9 -51.28%
BenchmarkCompareBytesDifferentLength 133 60.9 -54.21%
BenchmarkCompareBytesBigUnaligned
17985879 5669706 -68.48%
BenchmarkCompareBytesBig
17097634 4926798 -71.18%
BenchmarkCompareBytesBigIdentical
16861941 4389206 -73.97%
benchmark old MB/s new MB/s speedup
BenchmarkCompareBytesBigUnaligned 58.30 184.95 3.17x
BenchmarkCompareBytesBig 61.33 212.83 3.47x
BenchmarkCompareBytesBigIdentical 62.19 238.90 3.84x
This is a collaboration between Josh Bleecher Snyder and myself.
Change-Id: Ib3944b8c410d0e12135c2ba9459bfe131df48edd
Reviewed-on: https://go-review.googlesource.com/8010
Reviewed-by: Keith Randall <khr@golang.org>