Skip to content

DieHarder? And some results. #30

@jrp2014

Description

@jrp2014

I wasn't able to figure out how to run die harder on this library (cabal-plan seems to be some javascript-related doobry) but here, for reference, are some results after adding -O2 -fllvm to the ghc-options in the cabal file. cabal test, which I was expecting to do the diehard validation seems to complete v quickly (and successfully).

⇒  cabal bench                                                         master ✱
Build profile: -w ghc-8.8.3 -O1
In order, the following will be built (use -v for more details):
 - splitmix-0.0.4 (bench:comparison) (first run)
 - splitmix-0.0.4 (bench:range) (first run)
 - splitmix-0.0.4 (bench:simple-sum) (first run)
Preprocessing benchmark 'range' for splitmix-0.0.4..
Preprocessing benchmark 'simple-sum' for splitmix-0.0.4..
Preprocessing benchmark 'comparison' for splitmix-0.0.4..
Building benchmark 'simple-sum' for splitmix-0.0.4..
Building benchmark 'comparison' for splitmix-0.0.4..
Building benchmark 'range' for splitmix-0.0.4..
Running 1 benchmarks...
Benchmark simple-sum: RUNNING...
Summing randoms...
Running 1 benchmarks...
Benchmark comparison: RUNNING...
benchmarking list/random
Running 1 benchmarks...
Benchmark range: RUNNING...
[8,3,6,4,4,5,9,3,8,3,9,2,0,6,8,3,6,1,6,9,9,3,7,9,7,7,6,3,6,3,4,9,2,6,7,0,1,7,4,0,7,4,6,6,5,1,7,8,6,1,0,0,0,3,9,8,2,6,6,0,0,3,8,1,8,4,7,2,5,9]
773728671
Benchmark simple-sum: FINISH
4193221127
loop: 214.406ms
[8,2,3,7,5,4,6,6,3,8,8,9,5,1,3,3,3,2,6,9,5,1,0,0,9,4,8,0,8,8,9,1,5,8,6,3,8,6,9,3,2,9,5,1,4,5,3,3,3,7,9,5,6,8,5,1,6,8,5,1,9,8,2,9,2,2,3,6,1,9]
184201478
loop: 24.328ms
[2,9,0,1,5,2,6,9,3,9,2,1,2,6,9,8,0,4,3,6,2,3,5,0,6,7,1,1,5,2,1,7,0,7,6,1,6,6,7,7,3,0,6,4,1,9,1,6,9,5,4,7,5,4,9,9,5,9,5,9,5,8,4,5,4,2,5,3,6,9]
399431642
loop: 22.441ms
[5,7,4,1,2,7,1,3,6,8,5,3,8,8,8,8,6,8,1,9,8,2,9,1,3,3,1,5,9,5,1,8,0,1,1,9,8,2,8,9,0,3,5,4,0,0,4,9,0,2,0,1,8,6,9,6,4,7,4,3,4,3,2,6,8,1,3,8,4,4]
4059709080
loop: 11.869ms
Benchmark range: FINISH
time                 77.11 μs   (75.32 μs .. 78.78 μs)
                     0.996 R²   (0.995 R² .. 0.998 R²)
mean                 78.16 μs   (76.81 μs .. 80.03 μs)
std dev              5.283 μs   (3.834 μs .. 7.376 μs)
variance introduced by outliers: 68% (severely inflated)

benchmarking list/tf-random
time                 43.53 μs   (43.31 μs .. 43.78 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 43.89 μs   (43.62 μs .. 44.27 μs)
std dev              1.111 μs   (796.4 ns .. 1.469 μs)
variance introduced by outliers: 24% (moderately inflated)

benchmarking list/splitmix
time                 10.50 μs   (10.44 μs .. 10.59 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 10.60 μs   (10.53 μs .. 10.70 μs)
std dev              283.8 ns   (216.5 ns .. 397.5 ns)
variance introduced by outliers: 30% (moderately inflated)

benchmarking list/splitmix32
time                 53.10 μs   (52.67 μs .. 53.65 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 53.37 μs   (53.02 μs .. 53.92 μs)
std dev              1.496 μs   (1.077 μs .. 2.141 μs)
variance introduced by outliers: 27% (moderately inflated)

benchmarking tree/random
time                 78.27 μs   (77.75 μs .. 79.02 μs)
                     0.999 R²   (0.998 R² .. 1.000 R²)
mean                 78.80 μs   (78.19 μs .. 80.15 μs)
std dev              2.952 μs   (1.674 μs .. 5.519 μs)
variance introduced by outliers: 39% (moderately inflated)

benchmarking tree/tf-random
time                 97.22 μs   (96.57 μs .. 98.01 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 97.81 μs   (97.35 μs .. 98.93 μs)
std dev              2.319 μs   (1.257 μs .. 4.271 μs)
variance introduced by outliers: 20% (moderately inflated)

benchmarking tree/splitmix
time                 31.19 μs   (30.90 μs .. 31.66 μs)
                     0.999 R²   (0.997 R² .. 1.000 R²)
mean                 31.33 μs   (31.07 μs .. 31.76 μs)
std dev              1.113 μs   (776.6 ns .. 1.565 μs)
variance introduced by outliers: 40% (moderately inflated)

benchmarking tree/splitmix32
time                 54.17 μs   (53.95 μs .. 54.40 μs)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 54.11 μs   (53.92 μs .. 54.42 μs)
std dev              814.4 ns   (560.5 ns .. 1.120 μs)

benchmarking list 64/random
time                 690.3 μs   (686.6 μs .. 694.7 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 695.4 μs   (690.1 μs .. 707.7 μs)
std dev              25.56 μs   (15.74 μs .. 45.50 μs)
variance introduced by outliers: 28% (moderately inflated)

benchmarking list 64/tf-random
time                 96.02 μs   (95.22 μs .. 96.70 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 95.70 μs   (95.23 μs .. 96.72 μs)
std dev              2.201 μs   (1.335 μs .. 3.679 μs)
variance introduced by outliers: 19% (moderately inflated)

benchmarking list 64/splitmix
time                 10.52 μs   (10.47 μs .. 10.59 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 10.72 μs   (10.56 μs .. 10.99 μs)
std dev              668.3 ns   (360.0 ns .. 1.091 μs)
variance introduced by outliers: 71% (severely inflated)

benchmarking list 64/splitmix32
time                 47.42 μs   (47.15 μs .. 47.83 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 47.34 μs   (47.16 μs .. 47.66 μs)
std dev              798.2 ns   (588.7 ns .. 1.131 μs)
variance introduced by outliers: 12% (moderately inflated)

benchmarking tree 64/random
time                 393.0 μs   (388.9 μs .. 397.5 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 392.6 μs   (391.2 μs .. 395.1 μs)
std dev              6.418 μs   (4.380 μs .. 9.662 μs)

benchmarking tree 64/tf-random
time                 118.6 μs   (117.8 μs .. 119.5 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 118.6 μs   (118.1 μs .. 119.6 μs)
std dev              2.304 μs   (1.638 μs .. 3.345 μs)
variance introduced by outliers: 13% (moderately inflated)

benchmarking tree 64/splitmix
time                 30.04 μs   (29.92 μs .. 30.22 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 30.27 μs   (30.10 μs .. 30.59 μs)
std dev              748.5 ns   (507.9 ns .. 1.235 μs)
variance introduced by outliers: 24% (moderately inflated)

benchmarking tree 64/splitmix32
time                 50.58 μs   (50.43 μs .. 50.76 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 50.99 μs   (50.72 μs .. 51.53 μs)
std dev              1.311 μs   (644.3 ns .. 2.098 μs)
variance introduced by outliers: 24% (moderately inflated)

Benchmark comparison: FINISH

And this is how fast die harder ran, for comparison.

⇒  time dieharder -a                                                      cabal
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
        mt19937|  2.31e+08  |1357289862|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.32219977|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.99183311|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.88829129|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.47552993|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.57207286|  PASSED  
        diehard_opso|   0|   2097152|     100|0.96183858|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.01961944|  PASSED  
         diehard_dna|   0|   2097152|     100|0.72354765|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.46228067|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.05970675|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.60849546|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.47403236|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.17712917|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.76417557|  PASSED  
        diehard_sums|   0|       100|     100|0.00188530|   WEAK   
        diehard_runs|   0|    100000|     100|0.86714451|  PASSED  
        diehard_runs|   0|    100000|     100|0.31468742|  PASSED  
       diehard_craps|   0|    200000|     100|0.27692138|  PASSED  
       diehard_craps|   0|    200000|     100|0.99606867|   WEAK   
 marsaglia_tsang_gcd|   0|  10000000|     100|0.91269254|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.30202499|  PASSED  
         sts_monobit|   1|    100000|     100|0.75039500|  PASSED  
            sts_runs|   2|    100000|     100|0.87121820|  PASSED  
          sts_serial|   1|    100000|     100|0.91276174|  PASSED  
          sts_serial|   2|    100000|     100|0.07785382|  PASSED  
          sts_serial|   3|    100000|     100|0.21391146|  PASSED  
          sts_serial|   3|    100000|     100|0.61636101|  PASSED  
          sts_serial|   4|    100000|     100|0.04852318|  PASSED  
          sts_serial|   4|    100000|     100|0.06890833|  PASSED  
          sts_serial|   5|    100000|     100|0.64640039|  PASSED  
          sts_serial|   5|    100000|     100|0.15566413|  PASSED  
          sts_serial|   6|    100000|     100|0.25925876|  PASSED  
          sts_serial|   6|    100000|     100|0.42188017|  PASSED  
          sts_serial|   7|    100000|     100|0.89712564|  PASSED  
          sts_serial|   7|    100000|     100|0.15752814|  PASSED  
          sts_serial|   8|    100000|     100|0.99200916|  PASSED  
          sts_serial|   8|    100000|     100|0.14754261|  PASSED  
          sts_serial|   9|    100000|     100|0.40224701|  PASSED  
          sts_serial|   9|    100000|     100|0.11783364|  PASSED  
          sts_serial|  10|    100000|     100|0.41104508|  PASSED  
          sts_serial|  10|    100000|     100|0.65270873|  PASSED  
          sts_serial|  11|    100000|     100|0.40068619|  PASSED  
          sts_serial|  11|    100000|     100|0.87154252|  PASSED  
          sts_serial|  12|    100000|     100|0.61520736|  PASSED  
          sts_serial|  12|    100000|     100|0.79457532|  PASSED  
          sts_serial|  13|    100000|     100|0.80324219|  PASSED  
          sts_serial|  13|    100000|     100|0.47835828|  PASSED  
          sts_serial|  14|    100000|     100|0.36973089|  PASSED  
          sts_serial|  14|    100000|     100|0.23513146|  PASSED  
          sts_serial|  15|    100000|     100|0.94750268|  PASSED  
          sts_serial|  15|    100000|     100|0.98515115|  PASSED  
          sts_serial|  16|    100000|     100|0.55321285|  PASSED  
          sts_serial|  16|    100000|     100|0.62540449|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.96320086|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.83821645|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.20321908|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.98524885|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.27739524|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.07489931|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.61751664|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.97131442|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.42223836|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.50178169|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.35154775|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.93804234|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.93585747|  PASSED  
rgb_minimum_distance|   3|     10000|    1000|0.19720639|  PASSED  
rgb_minimum_distance|   4|     10000|    1000|0.02352979|  PASSED  
rgb_minimum_distance|   5|     10000|    1000|0.19851905|  PASSED  
    rgb_permutations|   2|    100000|     100|0.85551385|  PASSED  
    rgb_permutations|   3|    100000|     100|0.46500089|  PASSED  
    rgb_permutations|   4|    100000|     100|0.98908052|  PASSED  
    rgb_permutations|   5|    100000|     100|0.19891815|  PASSED  
      rgb_lagged_sum|   0|   1000000|     100|0.16760471|  PASSED  
      rgb_lagged_sum|   1|   1000000|     100|0.42277339|  PASSED  
      rgb_lagged_sum|   2|   1000000|     100|0.56522231|  PASSED  
      rgb_lagged_sum|   3|   1000000|     100|0.81416621|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.48806789|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.75147411|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.99043279|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.99240178|  PASSED  
      rgb_lagged_sum|   8|   1000000|     100|0.45881177|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.76879664|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.32207887|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.57990413|  PASSED  
      rgb_lagged_sum|  12|   1000000|     100|0.98382613|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.92439158|  PASSED  
      rgb_lagged_sum|  14|   1000000|     100|0.22964734|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.71182707|  PASSED  
      rgb_lagged_sum|  16|   1000000|     100|0.87187845|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.95335584|  PASSED  
      rgb_lagged_sum|  18|   1000000|     100|0.93743372|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.12737136|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.81115564|  PASSED  
      rgb_lagged_sum|  21|   1000000|     100|0.10563518|  PASSED  
      rgb_lagged_sum|  22|   1000000|     100|0.27415328|  PASSED  
      rgb_lagged_sum|  23|   1000000|     100|0.72502337|  PASSED  
      rgb_lagged_sum|  24|   1000000|     100|0.66531426|  PASSED  
      rgb_lagged_sum|  25|   1000000|     100|0.31275762|  PASSED  
      rgb_lagged_sum|  26|   1000000|     100|0.72654890|  PASSED  
      rgb_lagged_sum|  27|   1000000|     100|0.96598987|  PASSED  
      rgb_lagged_sum|  28|   1000000|     100|0.98763987|  PASSED  
      rgb_lagged_sum|  29|   1000000|     100|0.00478171|   WEAK   
      rgb_lagged_sum|  30|   1000000|     100|0.91487670|  PASSED  
      rgb_lagged_sum|  31|   1000000|     100|0.75855526|  PASSED  
      rgb_lagged_sum|  32|   1000000|     100|0.00049933|   WEAK   
     rgb_kstest_test|   0|     10000|    1000|0.39034368|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|0.02421839|  PASSED  
             dab_dct| 256|     50000|       1|0.60410352|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.64055173|  PASSED  
        dab_filltree|  32|  15000000|       1|0.28787024|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.20913741|  PASSED  
       dab_filltree2|   1|   5000000|       1|0.84455594|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.90696174|  PASSED  
dieharder -a  591.95s user 3.99s system 99% cpu 9:56.29 total

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