Update bench results

This commit is contained in:
Pascal Engélibert 2026-02-02 22:29:51 +01:00
commit aa2b7d17e6

132
README.md
View file

@ -95,75 +95,75 @@ Results on Intel Core i5-7300HQ: (with AVX2)
```
Time (s) PRNG
0.08816869 simd_rand::specific::avx2::xoshiro256plusplus::Xoshiro256PlusPlusX4
0.08920241 simd_rand::portable::xoshiro256plusplusx4::Xoshiro256PlusPlusX4
0.0916341 simd_rand::portable::xoshiro256plusx4::Xoshiro256PlusX4
0.091638505 frand::Rand
0.09203979 simd_rand::portable::xoshiro256plusx8::Xoshiro256PlusX8
0.09215377 simd_rand::specific::avx2::xoshiro256plus::Xoshiro256PlusX4
0.10456483 fast_rands::RomuDuoJrRand
0.10739412 romu::Rng
0.10897199 fast_rands::RomuTrioRand
0.11360018 simd_rand::specific::avx2::shishua::Shishua<32768>
0.12551166 rand_xoshiro::xoshiro256plus::Xoshiro256Plus
0.12791388 simd_rand::portable::xoshiro256plusplusx8::Xoshiro256PlusPlusX8
0.13942851 rand_xoshiro::xoshiro256starstar::Xoshiro256StarStar
0.14631735 rand_xoshiro::xoroshiro128plus::Xoroshiro128Plus
0.14701757 fast_rands::Xoshiro256PlusPlusRand
0.14716452 rand_xoshiro::xoshiro256plusplus::Xoshiro256PlusPlus
0.16382654 tinyrand::wyrand::Wyrand
0.16435602 shishua::core::ShiShuAState
0.16689982 wyrand::final_v4_2::wyrand::WyRand
0.16744553 fastrand::Rng
0.16864042 rand_xoshiro::xoroshiro128starstar::Xoroshiro128StarStar
0.16963984 wyhash::final3::traits::WyRng
0.17015934 wyhash::v1::traits::WyRng
0.17045826 rand::rngs::small::SmallRng
0.1716554 rand_xoshiro::xoroshiro128plusplus::Xoroshiro128PlusPlus
0.17414004 tinyrand::xorshift::Xorshift
0.17646453 fast_rands::Sfc64Rand
0.18034014 rand_xoshiro::splitmix64::SplitMix64
0.18191795 tiny_prng::xorshift::Xorshift1024star
0.19055116 tiny_prng::xorshift::Xorshift128
0.1933505 rand_xoshiro::xoshiro512plus::Xoshiro512Plus
0.2013804 tiny_prng::pcg::PcgXslRrMcg
0.2033752 rand_xoshiro::xoshiro512starstar::Xoshiro512StarStar
0.2053617 mcg59::MCG59
0.20707493 fast_rands::Lehmer64Rand
0.21336877 rand_xoshiro::xoshiro512plusplus::Xoshiro512PlusPlus
0.22039062 tinyrand::splitmix::SplitMix
0.23350179 tiny_prng::pcg::PcgXslRr
0.23514548 bsd4random::BSD
0.23781174 fast_rands::XorShift64Rand
0.23798868 tiny_prng::xorshift::Xorshift64
0.23917288 tiny_prng::xorshift::Xorshift64star
0.24470972 rand_xoshiro::xoshiro128plus::Xoshiro128Plus
0.2509169 tiny_prng::pcg::PcgXslRr6432Mcg
0.29076266 rand_xoshiro::xoshiro128starstar::Xoshiro128StarStar
0.3070184 rand_xoshiro::xoshiro128plusplus::Xoshiro128PlusPlus
0.31972992 aes_prng::AesRng
0.32094362 tiny_prng::pcg::PcgXshRs6432
0.3234704 prng_mt::mt19937::MT19937_64
0.33205837 tiny_prng::pcg::PcgXshRr6432
0.3321641 rand_xoshiro::xoroshiro64star::Xoroshiro64Star
0.37840256 rand_xoshiro::xoroshiro64starstar::Xoroshiro64StarStar
0.42188576 quad_rand::RandGenerator
0.45290765 rand::rngs::std::StdRng
0.46695596 tiny_prng::xorshift::Xorshift32
0.47651544 prng_mt::mt19937::MT19937
0.47986245 nanorand::rand::wyrand::WyRand
0.5589406 tiny_prng::mt64::Mt19937
0.6100908 nanorand::rand::pcg64::Pcg64
1.146011 nanorand::rand::chacha::ChaCha<8>
1.442915 tiny_prng::mt::Mt19937
1.7194357 shishua::rand::ShiShuARng
3.682478 acorn_prng::Acorn
15.616315 simplerand::Random
0.08826336 frand::Rand
0.0886573 simd_rand::specific::avx2::xoshiro256plusplus::Xoshiro256PlusPlusX4
0.08876129 simd_rand::portable::xoshiro256plusplusx4::Xoshiro256PlusPlusX4
0.089277595 simd_rand::portable::xoshiro256plusx4::Xoshiro256PlusX4
0.09128572 simd_rand::specific::avx2::xoshiro256plus::Xoshiro256PlusX4
0.09481453 simd_rand::portable::xoshiro256plusx8::Xoshiro256PlusX8
0.10730715 fast_rands::RomuDuoJrRand
0.10897806 fast_rands::RomuTrioRand
0.10994133 simd_rand::specific::avx2::shishua::Shishua<32768>
0.11030309 romu::Rng
0.122153305 simd_rand::portable::xoshiro256plusplusx8::Xoshiro256PlusPlusX8
0.12979501 rand_xoshiro::xoshiro256plus::Xoshiro256Plus
0.13618393 rand_xoshiro::xoshiro256starstar::Xoshiro256StarStar
0.14781812 rand_xoshiro::xoroshiro128plus::Xoroshiro128Plus
0.15827414 fast_rands::Xoshiro256PlusPlusRand
0.15854521 rand_xoshiro::xoshiro256plusplus::Xoshiro256PlusPlus
0.1587491 rand::rngs::small::SmallRng
0.16304855 shishua::core::ShiShuAState
0.1643057 rand_xoshiro::xoroshiro128plusplus::Xoroshiro128PlusPlus
0.16563393 tinyrand::wyrand::Wyrand
0.1673208 fastrand::Rng
0.16902256 wyhash::v1::traits::WyRng
0.16907188 wyrand::final_v4_2::wyrand::WyRand
0.16940956 wyhash::final3::traits::WyRng
0.17095926 rand_xoshiro::xoroshiro128starstar::Xoroshiro128StarStar
0.17670166 fast_rands::Sfc64Rand
0.17687643 tinyrand::xorshift::Xorshift
0.18041892 rand_xoshiro::splitmix64::SplitMix64
0.18187234 tiny_prng::xorshift::Xorshift1024star
0.18540086 tiny_prng::pcg::PcgXslRrMcg
0.18792455 tiny_prng::xorshift::Xorshift128
0.19410424 rand_xoshiro::xoshiro512plus::Xoshiro512Plus
0.20391174 fast_rands::Lehmer64Rand
0.2041288 mcg59::MCG59
0.21445897 rand_xoshiro::xoshiro512plusplus::Xoshiro512PlusPlus
0.21997462 tinyrand::splitmix::SplitMix
0.22679603 rand_xoshiro::xoshiro512starstar::Xoshiro512StarStar
0.23136179 bsd4random::BSD
0.23638329 fast_rands::XorShift64Rand
0.23744445 tiny_prng::pcg::PcgXslRr
0.23768099 tiny_prng::xorshift::Xorshift64star
0.23874637 tiny_prng::xorshift::Xorshift64
0.2519162 tiny_prng::pcg::PcgXslRr6432Mcg
0.2522125 rand_xoshiro::xoshiro128plus::Xoshiro128Plus
0.26618654 rand_xoshiro::xoshiro128starstar::Xoshiro128StarStar
0.31676543 rand_xoshiro::xoshiro128plusplus::Xoshiro128PlusPlus
0.32150853 tiny_prng::pcg::PcgXshRs6432
0.3222107 prng_mt::mt19937::MT19937_64
0.3227826 aes_prng::AesRng
0.32352522 rand_xoshiro::xoroshiro64star::Xoroshiro64Star
0.3316228 tiny_prng::pcg::PcgXshRr6432
0.3506137 rand_xoshiro::xoroshiro64starstar::Xoroshiro64StarStar
0.42379355 nanorand::rand::wyrand::WyRand
0.42504936 quad_rand::RandGenerator
0.46230927 rand::rngs::std::StdRng
0.4671986 tiny_prng::xorshift::Xorshift32
0.5528513 tiny_prng::mt64::Mt19937
0.6312231 prng_mt::mt19937::MT19937
0.6692442 nanorand::rand::pcg64::Pcg64
1.2569348 nanorand::rand::chacha::ChaCha<8>
1.4407393 tiny_prng::mt::Mt19937
2.0606635 shishua::rand::ShiShuARng
3.7855747 acorn_prng::Acorn
15.568359 simplerand::Random
```
[FRand](https://crates.io/crates/frand) is the fastest, however it has no particular mathematical justification beyond the fact its parameters were found empirically to minimize bias.
[FRand](https://crates.io/crates/frand) is among the fastest, however it has no particular mathematical justification beyond the fact its parameters were found empirically to minimize bias.
[simd_rand](https://github.com/martinothamar/simd-rand) provides the fastest implementations of common PRNGs. The best on my computer (without AVX512) was a portable one, probably thanks to compiler autovectorization. Sadly this crate is not published on crates.io, only on GitHub.
[simd_rand](https://crates.io/crates/simd_rand) provides the fastest implementations of common PRNGs, both portable and SIMD-specific.
[fast_rands](https://crates.io/crates/fast_rands) implements RomuDuoJr, the fastest after `simd_rand`. It is part of the Romu family which [has been studied](https://arxiv.org/pdf/2002.11331). It provides good quality up to at least 2^48 bytes. However this crate has too many dependencies that should not be necessary if you only want a PRNG, so copying the wanted functions can be an option.