Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge bitcoin#30349: benchmark: Improve SipHash_32b accuracy to avoid…
… potential optimization issues 42066f4 Refactor SipHash_32b benchmark to improve accuracy and avoid optimization issues (Lőrinc) Pull request description: This PR stems from the discussions in bitcoin#30317 (comment) The previous benchmark for `SipHash` was slightly less accurate in representing real-world usage and allowed for potential compiler optimizations that could invalidate the benchmark. This change aims to ensure the benchmark produces more realistic results. By modifying the initial values and only incrementing the bytes of `val`, the benchmark should reflects a more typical usage patterns - and prevent the compiler from optimizing away the calculations. ------- On my M1 processor the benchmark's speed changed significantly (but the CI seems to produce the same result as before): > cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_BENCH=ON && cmake --build build -j10 && ./build/src/bench/bench_bitcoin --filter=SipHash_32b --min-time=1000 Before: | ns/op | op/s | err% | total | benchmark |--------------------:|--------------------:|--------:|----------:|:---------- | 35.15 | 28,445,856.66 | 0.2% | 1.10 | `SipHash_32b` After (note that only the benchmark changed): | ns/op | op/s | err% | total | benchmark |--------------------:|--------------------:|--------:|----------:|:---------- | 22.05 | 45,350,886.64 | 0.3% | 1.10 | `SipHash_32b` ACKs for top commit: maflcko: review ACK 42066f4 achow101: ACK 42066f4 hodlinator: ACK 42066f4 Tree-SHA512: 6bbe9d725d4c3396642e55ce48c31baa5339e56838d6d5fb377fb1069daa9292375e7020ceff7da0d78befffc1e984f717b5232217fe911989613480adaa937e
- Loading branch information