Update bench results
This commit is contained in:
parent
e743ec1b73
commit
aa2b7d17e6
1 changed files with 66 additions and 66 deletions
132
README.md
132
README.md
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue