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 Time (s) PRNG
0.08816869 simd_rand::specific::avx2::xoshiro256plusplus::Xoshiro256PlusPlusX4 0.08826336 frand::Rand
0.08920241 simd_rand::portable::xoshiro256plusplusx4::Xoshiro256PlusPlusX4 0.0886573 simd_rand::specific::avx2::xoshiro256plusplus::Xoshiro256PlusPlusX4
0.0916341 simd_rand::portable::xoshiro256plusx4::Xoshiro256PlusX4 0.08876129 simd_rand::portable::xoshiro256plusplusx4::Xoshiro256PlusPlusX4
0.091638505 frand::Rand 0.089277595 simd_rand::portable::xoshiro256plusx4::Xoshiro256PlusX4
0.09203979 simd_rand::portable::xoshiro256plusx8::Xoshiro256PlusX8 0.09128572 simd_rand::specific::avx2::xoshiro256plus::Xoshiro256PlusX4
0.09215377 simd_rand::specific::avx2::xoshiro256plus::Xoshiro256PlusX4 0.09481453 simd_rand::portable::xoshiro256plusx8::Xoshiro256PlusX8
0.10456483 fast_rands::RomuDuoJrRand 0.10730715 fast_rands::RomuDuoJrRand
0.10739412 romu::Rng 0.10897806 fast_rands::RomuTrioRand
0.10897199 fast_rands::RomuTrioRand 0.10994133 simd_rand::specific::avx2::shishua::Shishua<32768>
0.11360018 simd_rand::specific::avx2::shishua::Shishua<32768> 0.11030309 romu::Rng
0.12551166 rand_xoshiro::xoshiro256plus::Xoshiro256Plus 0.122153305 simd_rand::portable::xoshiro256plusplusx8::Xoshiro256PlusPlusX8
0.12791388 simd_rand::portable::xoshiro256plusplusx8::Xoshiro256PlusPlusX8 0.12979501 rand_xoshiro::xoshiro256plus::Xoshiro256Plus
0.13942851 rand_xoshiro::xoshiro256starstar::Xoshiro256StarStar 0.13618393 rand_xoshiro::xoshiro256starstar::Xoshiro256StarStar
0.14631735 rand_xoshiro::xoroshiro128plus::Xoroshiro128Plus 0.14781812 rand_xoshiro::xoroshiro128plus::Xoroshiro128Plus
0.14701757 fast_rands::Xoshiro256PlusPlusRand 0.15827414 fast_rands::Xoshiro256PlusPlusRand
0.14716452 rand_xoshiro::xoshiro256plusplus::Xoshiro256PlusPlus 0.15854521 rand_xoshiro::xoshiro256plusplus::Xoshiro256PlusPlus
0.16382654 tinyrand::wyrand::Wyrand 0.1587491 rand::rngs::small::SmallRng
0.16435602 shishua::core::ShiShuAState 0.16304855 shishua::core::ShiShuAState
0.16689982 wyrand::final_v4_2::wyrand::WyRand 0.1643057 rand_xoshiro::xoroshiro128plusplus::Xoroshiro128PlusPlus
0.16744553 fastrand::Rng 0.16563393 tinyrand::wyrand::Wyrand
0.16864042 rand_xoshiro::xoroshiro128starstar::Xoroshiro128StarStar 0.1673208 fastrand::Rng
0.16963984 wyhash::final3::traits::WyRng 0.16902256 wyhash::v1::traits::WyRng
0.17015934 wyhash::v1::traits::WyRng 0.16907188 wyrand::final_v4_2::wyrand::WyRand
0.17045826 rand::rngs::small::SmallRng 0.16940956 wyhash::final3::traits::WyRng
0.1716554 rand_xoshiro::xoroshiro128plusplus::Xoroshiro128PlusPlus 0.17095926 rand_xoshiro::xoroshiro128starstar::Xoroshiro128StarStar
0.17414004 tinyrand::xorshift::Xorshift 0.17670166 fast_rands::Sfc64Rand
0.17646453 fast_rands::Sfc64Rand 0.17687643 tinyrand::xorshift::Xorshift
0.18034014 rand_xoshiro::splitmix64::SplitMix64 0.18041892 rand_xoshiro::splitmix64::SplitMix64
0.18191795 tiny_prng::xorshift::Xorshift1024star 0.18187234 tiny_prng::xorshift::Xorshift1024star
0.19055116 tiny_prng::xorshift::Xorshift128 0.18540086 tiny_prng::pcg::PcgXslRrMcg
0.1933505 rand_xoshiro::xoshiro512plus::Xoshiro512Plus 0.18792455 tiny_prng::xorshift::Xorshift128
0.2013804 tiny_prng::pcg::PcgXslRrMcg 0.19410424 rand_xoshiro::xoshiro512plus::Xoshiro512Plus
0.2033752 rand_xoshiro::xoshiro512starstar::Xoshiro512StarStar 0.20391174 fast_rands::Lehmer64Rand
0.2053617 mcg59::MCG59 0.2041288 mcg59::MCG59
0.20707493 fast_rands::Lehmer64Rand 0.21445897 rand_xoshiro::xoshiro512plusplus::Xoshiro512PlusPlus
0.21336877 rand_xoshiro::xoshiro512plusplus::Xoshiro512PlusPlus 0.21997462 tinyrand::splitmix::SplitMix
0.22039062 tinyrand::splitmix::SplitMix 0.22679603 rand_xoshiro::xoshiro512starstar::Xoshiro512StarStar
0.23350179 tiny_prng::pcg::PcgXslRr 0.23136179 bsd4random::BSD
0.23514548 bsd4random::BSD 0.23638329 fast_rands::XorShift64Rand
0.23781174 fast_rands::XorShift64Rand 0.23744445 tiny_prng::pcg::PcgXslRr
0.23798868 tiny_prng::xorshift::Xorshift64 0.23768099 tiny_prng::xorshift::Xorshift64star
0.23917288 tiny_prng::xorshift::Xorshift64star 0.23874637 tiny_prng::xorshift::Xorshift64
0.24470972 rand_xoshiro::xoshiro128plus::Xoshiro128Plus 0.2519162 tiny_prng::pcg::PcgXslRr6432Mcg
0.2509169 tiny_prng::pcg::PcgXslRr6432Mcg 0.2522125 rand_xoshiro::xoshiro128plus::Xoshiro128Plus
0.29076266 rand_xoshiro::xoshiro128starstar::Xoshiro128StarStar 0.26618654 rand_xoshiro::xoshiro128starstar::Xoshiro128StarStar
0.3070184 rand_xoshiro::xoshiro128plusplus::Xoshiro128PlusPlus 0.31676543 rand_xoshiro::xoshiro128plusplus::Xoshiro128PlusPlus
0.31972992 aes_prng::AesRng 0.32150853 tiny_prng::pcg::PcgXshRs6432
0.32094362 tiny_prng::pcg::PcgXshRs6432 0.3222107 prng_mt::mt19937::MT19937_64
0.3234704 prng_mt::mt19937::MT19937_64 0.3227826 aes_prng::AesRng
0.33205837 tiny_prng::pcg::PcgXshRr6432 0.32352522 rand_xoshiro::xoroshiro64star::Xoroshiro64Star
0.3321641 rand_xoshiro::xoroshiro64star::Xoroshiro64Star 0.3316228 tiny_prng::pcg::PcgXshRr6432
0.37840256 rand_xoshiro::xoroshiro64starstar::Xoroshiro64StarStar 0.3506137 rand_xoshiro::xoroshiro64starstar::Xoroshiro64StarStar
0.42188576 quad_rand::RandGenerator 0.42379355 nanorand::rand::wyrand::WyRand
0.45290765 rand::rngs::std::StdRng 0.42504936 quad_rand::RandGenerator
0.46695596 tiny_prng::xorshift::Xorshift32 0.46230927 rand::rngs::std::StdRng
0.47651544 prng_mt::mt19937::MT19937 0.4671986 tiny_prng::xorshift::Xorshift32
0.47986245 nanorand::rand::wyrand::WyRand 0.5528513 tiny_prng::mt64::Mt19937
0.5589406 tiny_prng::mt64::Mt19937 0.6312231 prng_mt::mt19937::MT19937
0.6100908 nanorand::rand::pcg64::Pcg64 0.6692442 nanorand::rand::pcg64::Pcg64
1.146011 nanorand::rand::chacha::ChaCha<8> 1.2569348 nanorand::rand::chacha::ChaCha<8>
1.442915 tiny_prng::mt::Mt19937 1.4407393 tiny_prng::mt::Mt19937
1.7194357 shishua::rand::ShiShuARng 2.0606635 shishua::rand::ShiShuARng
3.682478 acorn_prng::Acorn 3.7855747 acorn_prng::Acorn
15.616315 simplerand::Random 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. [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.