@@ -17,54 +17,24 @@ Sources:
1717* No abstraction - interfaces etc, makes it easier to not invalidate the above
1818* Vectorization where possible - beneficial if PRNG is on your hotpath
1919
20+ ### Running tests
21+
22+ ``` pwsh
23+ dotnet test -c Release --logger:"console;verbosity=detailed"
24+ ```
25+
2026### Initial benchmarks
2127
2228The benchmarks measure generation of ` double ` s.
2329Iterations = ` double ` s per op.
2430
2531#### With hardware counters
2632
27- ``` ini
28-
29- BenchmarkDotNet =v0.13.5, OS =Windows 11 (10.0.22621.1555/22H2/2022Update/SunValley2)
30- AMD Ryzen 5 5600X, 1 CPU, 12 logical and 6 physical cores
31- .NET SDK =7.0.300-preview.23122.5
32- [Host] : .NET 7.0.5 (7.0.523.17405), X64 RyuJIT AVX2
33- DefaultJob : .NET 7.0.5 (7.0.523.17405), X64 RyuJIT AVX2
34-
35-
36- ```
37- | Method | Iterations | Mean | Error | StdDev | Ratio | RatioSD | Rank | BranchInstructions/Op | CacheMisses/Op | TotalCycles/Op | BranchMispredictions/Op | Allocated | Alloc Ratio |
38- | -------------------- | ----------- | ---------:| --------:| --------:| -------------:| --------:| -----:| ----------------------:| ---------------:| ---------------:| ------------------------:| ----------:| ------------:|
39- | SystemRandomGen | 100000 | 423.5 μs | 7.62 μs | 7.13 μs | baseline | | 4 | 603,262 | 482 | 1,293,860 | 716 | - | NA |
40- | Xoroshiro128PlusGen | 100000 | 305.8 μs | 2.99 μs | 2.80 μs | 1.38x faster | 0.03x | 3 | 107,806 | 261 | 999,642 | 392 | - | NA |
41- | Xoshiro256PlusGen | 100000 | 231.2 μs | 2.85 μs | 2.67 μs | 1.83x faster | 0.03x | 2 | 105,846 | 219 | 750,974 | 308 | - | NA |
42- | ShishuaGen | 100000 | 185.7 μs | 1.32 μs | 1.24 μs | 2.28x faster | 0.05x | 1 | 437,648 | 640 | 529,914 | 346 | - | NA |
43-
33+ ![ With hardware counters] ( /img/perf-hardwarecounters.png " With hardware counters ")
4434
4535#### Scaling iterations
4636
4737There is likely overhead in capturing hardware counters, so these should be more "correct"
4838
49- ``` ini
50-
51- BenchmarkDotNet =v0.13.5, OS =Windows 11 (10.0.22621.1555/22H2/2022Update/SunValley2)
52- AMD Ryzen 5 5600X, 1 CPU, 12 logical and 6 physical cores
53- .NET SDK =7.0.300-preview.23122.5
54- [Host] : .NET 7.0.5 (7.0.523.17405), X64 RyuJIT AVX2
55- DefaultJob : .NET 7.0.5 (7.0.523.17405), X64 RyuJIT AVX2
56-
57-
58- ```
59- | Method | Iterations | Mean | Error | StdDev | Ratio | RatioSD | Rank |
60- | -------------------- | ----------- | -----------:| ---------:| ---------:| -------------:| --------:| -----:|
61- | SystemRandomGen | 100000 | 282.1 μs | 2.04 μs | 1.70 μs | baseline | | 4 |
62- | Xoroshiro128PlusGen | 100000 | 213.2 μs | 0.45 μs | 0.37 μs | 1.32x faster | 0.01x | 3 |
63- | Xoshiro256PlusGen | 100000 | 158.7 μs | 1.18 μs | 1.11 μs | 1.78x faster | 0.02x | 2 |
64- | ShishuaGen | 100000 | 103.5 μs | 0.54 μs | 0.45 μs | 2.73x faster | 0.02x | 1 |
65- | | | | | | | | |
66- | SystemRandomGen | 1000000 | 2,825.6 μs | 18.07 μs | 16.90 μs | baseline | | 4 |
67- | Xoroshiro128PlusGen | 1000000 | 2,141.1 μs | 15.47 μs | 14.47 μs | 1.32x faster | 0.01x | 3 |
68- | Xoshiro256PlusGen | 1000000 | 1,583.3 μs | 7.22 μs | 6.40 μs | 1.79x faster | 0.01x | 2 |
69- | ShishuaGen | 1000000 | 1,030.8 μs | 8.83 μs | 8.26 μs | 2.74x faster | 0.03x | 1 |
39+ ![ Scaling iterations] ( /img/perf-scaling.png " Scaling iterations ")
7040
0 commit comments