Skip to content

Instantly share code, notes, and snippets.

@calmh
Last active July 9, 2016 15:41
Show Gist options
  • Save calmh/51b98c13b3c2612f04f50e9a9374371a to your computer and use it in GitHub Desktop.
Save calmh/51b98c13b3c2612f04f50e9a9374371a to your computer and use it in GitHub Desktop.
Hash comparison
Intel(R) Atom(TM) CPU D510 @ 1.66GHz
[email protected]:~# ./gohashcompare
Build: go1.7rc1 linux-amd64
testing: warning: no tests to run
Blake2b 256-2 300 3666414 ns/op 35.75 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified-2 1000 1502475 ns/op 87.24 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD-2 500 2760274 ns/op 47.49 MB/s 32 B/op 1 allocs/op 1.10x
Blake2b 512-2 1000 1504312 ns/op 87.13 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified-2 1000 1509428 ns/op 86.84 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD-2 500 2763819 ns/op 47.42 MB/s 64 B/op 1 allocs/op
Blake2s 256-2 1000 2356652 ns/op 55.62 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified-2 500 2567841 ns/op 51.04 MB/s 32 B/op 1 allocs/op
SHA256-2 500 3061000 ns/op 42.82 MB/s 32 B/op 1 allocs/op
SHA512-2 1000 2089714 ns/op 62.72 MB/s 64 B/op 1 allocs/op
Skein 1024-2 300 4832362 ns/op 27.12 MB/s 160 B/op 2 allocs/op
Skein 256-2 300 7154091 ns/op 18.32 MB/s 64 B/op 2 allocs/op
Skein 512-2 300 4691617 ns/op 27.94 MB/s 96 B/op 2 allocs/op
PASS
Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz
Build: go1.6.2 linux-amd64
testing: warning: no tests to run
PASS
Blake2b 256-2 2000 1166350 ns/op 112.38 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified-2 1000 1193517 ns/op 109.82 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD-2 3000 590211 ns/op 222.08 MB/s 32 B/op 1 allocs/op 1.85x
Blake2b 512-2 2000 1201587 ns/op 109.08 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified-2 2000 1159716 ns/op 113.02 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD-2 3000 585476 ns/op 223.87 MB/s 64 B/op 1 allocs/op
Blake2s 256-2 1000 1804860 ns/op 72.62 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified-2 1000 1785138 ns/op 73.42 MB/s 32 B/op 1 allocs/op
SHA256-2 2000 1091992 ns/op 120.03 MB/s 32 B/op 1 allocs/op
SHA512-2 2000 729279 ns/op 179.73 MB/s 64 B/op 1 allocs/op
Skein 1024-2 300 5648263 ns/op 23.21 MB/s 160 B/op 2 allocs/op
Skein 256-2 1000 2243489 ns/op 58.42 MB/s 64 B/op 2 allocs/op
Skein 512-2 500 2686784 ns/op 48.78 MB/s 96 B/op 2 allocs/op
Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
jb@nuc:~$ ./gohashcompare
Build: go1.7rc1 linux-amd64
testing: warning: no tests to run
Blake2b 256-4 3000 459929 ns/op 284.98 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified-4 3000 459920 ns/op 284.99 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD-4 5000 325096 ns/op 403.18 MB/s 32 B/op 1 allocs/op 3.85x
Blake2b 512-4 3000 460417 ns/op 284.68 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified-4 3000 465270 ns/op 281.71 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD-4 5000 324998 ns/op 403.30 MB/s 64 B/op 1 allocs/op
Blake2s 256-4 2000 703009 ns/op 186.44 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified-4 2000 731395 ns/op 179.21 MB/s 32 B/op 1 allocs/op
SHA256-4 1000 1252202 ns/op 104.67 MB/s 32 B/op 1 allocs/op
SHA512-4 2000 762396 ns/op 171.92 MB/s 64 B/op 1 allocs/op
Skein 1024-4 1000 1733596 ns/op 75.61 MB/s 160 B/op 2 allocs/op
Skein 256-4 1000 1789397 ns/op 73.25 MB/s 64 B/op 2 allocs/op
Skein 512-4 1000 1444320 ns/op 90.75 MB/s 96 B/op 2 allocs/op
PASS
jb@nuc:~$
Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
jb@syno:~/s/g/A/gohashcompare $ gohashcompare
Build: go1.7rc1 darwin-amd64
testing: warning: no tests to run
Blake2b 256-8 10000 216985 ns/op 604.06 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified-8 10000 221110 ns/op 592.79 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD-8 10000 147906 ns/op 886.18 MB/s 32 B/op 1 allocs/op 2.4x
Blake2b 512-8 10000 223833 ns/op 585.58 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified-8 10000 224939 ns/op 582.70 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD-8 10000 148861 ns/op 880.50 MB/s 64 B/op 1 allocs/op
Blake2s 256-8 5000 346258 ns/op 378.54 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified-8 5000 349105 ns/op 375.45 MB/s 32 B/op 1 allocs/op
SHA256-8 5000 356207 ns/op 367.96 MB/s 32 B/op 1 allocs/op
SHA512-8 3000 421801 ns/op 310.74 MB/s 64 B/op 1 allocs/op
Skein 1024-8 2000 700280 ns/op 187.17 MB/s 160 B/op 2 allocs/op
Skein 256-8 2000 861669 ns/op 152.11 MB/s 64 B/op 2 allocs/op
Skein 512-8 2000 679236 ns/op 192.97 MB/s 96 B/op 2 allocs/op
PASS
raspberry pi 1
Build: go1.6.2 linux-arm
testing: warning: no tests to run
PASS
Blake2b 256 20 95195163 ns/op 1.38 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified 20 93911598 ns/op 1.40 MB/s 32 B/op 1 allocs/op 0.33x
Blake2b 256 SIMD 20 93872950 ns/op 1.40 MB/s 32 B/op 1 allocs/op
Blake2b 512 20 95351959 ns/op 1.37 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified 20 93806301 ns/op 1.40 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD 20 94034095 ns/op 1.39 MB/s 64 B/op 1 allocs/op
Blake2s 256 30 51338844 ns/op 2.55 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified 50 33666187 ns/op 3.89 MB/s 32 B/op 1 allocs/op
SHA256 50 30717829 ns/op 4.27 MB/s 32 B/op 1 allocs/op
SHA512 30 46653541 ns/op 2.81 MB/s 64 B/op 1 allocs/op
Skein 1024 10 188292085 ns/op 0.70 MB/s 160 B/op 2 allocs/op
Skein 256 20 88221856 ns/op 1.49 MB/s 64 B/op 2 allocs/op
Skein 512 10 156115376 ns/op 0.84 MB/s 96 B/op 2 allocs/op
ARMv7 Processor rev 5 (v7l)
jb@pi2:~$ ./gohashcompare
Build: go1.7rc1 linux-arm
testing: warning: no tests to run
Blake2b 256-4 50 21958549 ns/op 5.97 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified-4 100 21432968 ns/op 6.12 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD-4 100 21472439 ns/op 6.10 MB/s 32 B/op 1 allocs/op 0.87x
Blake2b 512-4 100 21960574 ns/op 5.97 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified-4 100 21364250 ns/op 6.14 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD-4 100 21288134 ns/op 6.16 MB/s 64 B/op 1 allocs/op
Blake2s 256-4 100 18470059 ns/op 7.10 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified-4 100 16297310 ns/op 8.04 MB/s 32 B/op 1 allocs/op
SHA256-4 100 18857723 ns/op 6.95 MB/s 208 B/op 3 allocs/op
SHA512-4 50 31078913 ns/op 4.22 MB/s 400 B/op 3 allocs/op
Skein 1024-4 30 51162188 ns/op 2.56 MB/s 160 B/op 2 allocs/op
Skein 256-4 50 33345276 ns/op 3.93 MB/s 64 B/op 2 allocs/op
Skein 512-4 50 35201064 ns/op 3.72 MB/s 96 B/op 2 allocs/op
PASS
jb@pi2:~$
AMD Sempron(tm) 2800+
Build: go1.6.2 linux-386
testing: warning: no tests to run
PASS
Blake2b 256 300 5327603 ns/op 24.60 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified 300 5173342 ns/op 25.34 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD 300 5218932 ns/op 25.11 MB/s 32 B/op 1 allocs/op 0.36x
Blake2b 512 300 5205231 ns/op 25.18 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified 300 5315421 ns/op 24.66 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD 300 5113038 ns/op 25.63 MB/s 64 B/op 1 allocs/op
Blake2s 256 200 6307046 ns/op 20.78 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified 300 5299661 ns/op 24.73 MB/s 32 B/op 1 allocs/op
SHA256 1000 1899993 ns/op 68.99 MB/s 32 B/op 1 allocs/op
SHA512 200 8753078 ns/op 14.97 MB/s 64 B/op 1 allocs/op
Skein 1024 100 17722179 ns/op 7.40 MB/s 160 B/op 2 allocs/op
Skein 256 200 8357491 ns/op 15.68 MB/s 64 B/op 2 allocs/op
Skein 512 200 7871812 ns/op 16.65 MB/s 96 B/op 2 allocs/op
Intel(r) Xeon(r) CPU E5540 @ 2.53GHz
jb@zlogin4:~ $ ./gohashcompare
Build: go1.7rc1 solaris-amd64
testing: warning: no tests to run
Blake2b 256-16 5000 365511 ns/op 358.60 MB/s 32 B/op 1 allocs/op
Blake2b 256 Modified-16 5000 365399 ns/op 358.71 MB/s 32 B/op 1 allocs/op
Blake2b 256 SIMD-16 5000 278401 ns/op 470.80 MB/s 32 B/op 1 allocs/op 3.24x
Blake2b 512-16 5000 365897 ns/op 358.22 MB/s 64 B/op 1 allocs/op
Blake2b 512 Modified-16 5000 365458 ns/op 358.65 MB/s 64 B/op 1 allocs/op
Blake2b 512 SIMD-16 5000 277428 ns/op 472.45 MB/s 64 B/op 1 allocs/op
Blake2s 256-16 3000 599521 ns/op 218.63 MB/s 32 B/op 1 allocs/op
Blake2s 256 Modified-16 3000 598987 ns/op 218.82 MB/s 32 B/op 1 allocs/op
SHA256-16 2000 903447 ns/op 145.08 MB/s 32 B/op 1 allocs/op
SHA512-16 3000 577518 ns/op 226.96 MB/s 64 B/op 1 allocs/op
Skein 1024-16 2000 1177731 ns/op 111.29 MB/s 160 B/op 2 allocs/op
Skein 256-16 1000 1314263 ns/op 99.73 MB/s 64 B/op 2 allocs/op
Skein 512-16 2000 1103550 ns/op 118.77 MB/s 96 B/op 2 allocs/op
PASS
jb@zlogin4:~ $
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment