forked from Alepha/Alepha
comment explaining the reason for use of Taus88
This commit is contained in:
@ -13,6 +13,14 @@ namespace Alepha::Hydrogen ::detail:: fastRandom_m
|
|||||||
struct FastRandomState
|
struct FastRandomState
|
||||||
{
|
{
|
||||||
boost::random::taus88 fastRandomState{ std::random_device{}() };
|
boost::random::taus88 fastRandomState{ std::random_device{}() };
|
||||||
|
/* The choice of Taus88 is deliberate. The more familiar Mt19937
|
||||||
|
is only slightly slower and its cousin Mt11213b is effectively
|
||||||
|
no slower, but they require 100x to 200x as many integers to
|
||||||
|
maintain state. Thus with even only one random variable, the
|
||||||
|
latter two will exceed cache line size and create cache load,
|
||||||
|
but with several/many the cache pressure will be significant and
|
||||||
|
affect performance not just for this code but for the system.
|
||||||
|
*/
|
||||||
std::uint32_t pool;
|
std::uint32_t pool;
|
||||||
int remainingBits= 0;
|
int remainingBits= 0;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user