Skip to content

DieHarder? And some results. #30

Open
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions