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:
Lőrinc
2025-09-30 20:58:19 -04:00
parent ec11b9fede
commit 9ca52a4cbe
8 changed files with 45 additions and 55 deletions

View File

@@ -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;
});