Skip to content

Xoroshiro128Plus slows down relative to Base MT with increasing sample size #68

@robsmith11

Description

@robsmith11

From what I've read, Xoroshiro is often suggested as the fastest RNG with decent random properties. Using the implementation here, I do see it beating Base's MT for small samples, but getting relatively slower as the sample size passes ~100:

julia> r0 = Random.default_rng();

julia> r1 = RandomNumbers.Xorshifts.Xoroshiro128Plus(1);

julia> @btime rand($r0);
  2.458 ns (0 allocations: 0 bytes)

julia> @btime rand($r1);
  1.925 ns (0 allocations: 0 bytes)

julia> @btime rand($r0, 8);
  41.771 ns (1 allocation: 144 bytes)

julia> @btime rand($r1, 8);
  34.454 ns (1 allocation: 144 bytes)

julia> @btime rand($r0, 128);
  171.495 ns (1 allocation: 1.14 KiB)

julia> @btime rand($r1, 128);
  180.105 ns (1 allocation: 1.14 KiB)

julia> @btime rand($r0, 10^7);
  6.606 ms (2 allocations: 76.29 MiB)

julia> @btime rand($r1, 10^7);
  25.872 ms (2 allocations: 76.29 MiB)

Is this to be expected? Perhaps this information could be added to the docs.

julia> versioninfo()
Julia Version 1.5.0-DEV.803
Commit 8ab87d2205 (2020-05-03 08:07 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)
Environment:
  JULIA_NUM_THREADS = 8

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions