mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-11 09:42:17 +01:00
optimization: migrate SipHashUint256 to PresaltedSipHasher
Replaces standalone `SipHashUint256` with an `operator()` overload in `PresaltedSipHasher`. Updates all hasher classes (`SaltedUint256Hasher`, `SaltedTxidHasher`, `SaltedWtxidHasher`) to use `PresaltedSipHasher` internally, enabling the same constant-state caching optimization while keeping behavior unchanged. Benchmark was also adjusted to cache the salting part.
This commit is contained in:
@@ -193,13 +193,11 @@ static void SHA512(benchmark::Bench& bench)
|
||||
static void SipHash_32b(benchmark::Bench& bench)
|
||||
{
|
||||
FastRandomContext rng{/*fDeterministic=*/true};
|
||||
auto k0{rng.rand64()}, k1{rng.rand64()};
|
||||
PresaltedSipHasher presalted_sip_hasher(rng.rand64(), rng.rand64());
|
||||
auto val{rng.rand256()};
|
||||
auto i{0U};
|
||||
bench.run([&] {
|
||||
ankerl::nanobench::doNotOptimizeAway(SipHashUint256(k0, k1, val));
|
||||
++k0;
|
||||
++k1;
|
||||
ankerl::nanobench::doNotOptimizeAway(presalted_sip_hasher(val));
|
||||
++i;
|
||||
val.data()[i % uint256::size()] ^= i & 0xFF;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user