1
0
mirror of https://github.com/henrydcase/nobs.git synced 2024-11-26 00:51:22 +00:00
nobs/hash/shake
Henry Case 49c7e4ae43 SHAKE: Don't use function pointers
* xorIn and copyOut function pointers cause input and output data
  to be moved to heap. This degrades performance of calling code.

* This change removes usage of those function pointers. We will always
  use unaligned implementation as it's faster (but may crash on some
  systems)

* Benchmark compares generic vs unaligned xorIn and copyOut

benchmark                          old ns/op     new ns/op     delta
BenchmarkPermutationFunction-4     463           815           +76.03%
BenchmarkShake128_MTU-4            4443          8180          +84.11%
BenchmarkShake256_MTU-4            4739          9060          +91.18%
BenchmarkShake256_16x-4            71886         132629        +84.50%
BenchmarkShake256_1MiB-4           3695138       6649012       +79.94%
BenchmarkCShake128_448_16x-4       21210         24611         +16.03%
BenchmarkCShake128_1MiB-4          3009342       3396496       +12.87%
BenchmarkCShake256_448_16x-4       26034         27785         +6.73%
BenchmarkCShake256_1MiB-4          3654713       3829404       +4.78%
2019-05-14 16:31:51 +01:00
..
testdata Adds cSHAKE with 0 alloc interface (#19) 2019-05-14 01:19:29 +01:00
keccakf_amd64.go Adds cSHAKE with 0 alloc interface (#19) 2019-05-14 01:19:29 +01:00
keccakf_amd64.s Adds cSHAKE with 0 alloc interface (#19) 2019-05-14 01:19:29 +01:00
keccakf.go Adds cSHAKE with 0 alloc interface (#19) 2019-05-14 01:19:29 +01:00
sha3_test.go SHAKE: Don't use function pointers 2019-05-14 16:31:51 +01:00
sha3.go SHAKE: Don't use function pointers 2019-05-14 16:31:51 +01:00
shake.go Adds cSHAKE with 0 alloc interface (#19) 2019-05-14 01:19:29 +01:00
xor_generic.go SHAKE: Don't use function pointers 2019-05-14 16:31:51 +01:00
xor_unaligned.go SHAKE: Don't use function pointers 2019-05-14 16:31:51 +01:00