packages feed

mcmc-0.4.0.0: bench/Bench.hs

-- |
-- Module      :  Main
-- Copyright   :  (c) Dominik Schrempf 2020
-- License     :  GPL-3.0-or-later
--
-- Maintainer  :  dominik.schrempf@gmail.com
-- Stability   :  unstable
-- Portability :  portable
--
-- Creation date: Fri May  8 17:27:03 2020.
module Main
  ( main,
  )
where

import Criterion.Main
import Normal
import Poisson
import System.Random.MWC

main :: IO ()
main = do
  g <- create
  defaultMain
    [ bgroup
        "Normal"
        [ bench "Slide" $ nfIO (normalSlideBench g),
          bench "Bactrian" $ nfIO (normalBactrianBench g),
          bench "LargeCycle" $ nfIO (normalLargeCycleBench g)
        ],
      bench "Poisson" $ nfIO (poissonBench g),
      bgroup
        "MC3"
        [ bench "MC3 2" $ nfIO (normalMC3 g 2),
          bench "MC3 3" $ nfIO (normalMC3 g 3),
          bench "MC3 4" $ nfIO (normalMC3 g 4),
          bench "MC3 5" $ nfIO (normalMC3 g 5),
          bench "MC3 10" $ nfIO (normalMC3 g 10)
        ]
    ]

-- benchmarking Normal/Slide
-- time                 42.31 ms   (41.88 ms .. 42.60 ms)
--                      1.000 R²   (0.999 R² .. 1.000 R²)
-- mean                 42.75 ms   (42.52 ms .. 43.29 ms)
-- std dev              661.4 μs   (347.4 μs .. 1.074 ms)

-- benchmarking Normal/Bactrian
-- time                 45.51 ms   (45.30 ms .. 45.92 ms)
--                      1.000 R²   (0.999 R² .. 1.000 R²)
-- mean                 45.41 ms   (45.31 ms .. 45.61 ms)
-- std dev              276.0 μs   (141.5 μs .. 460.8 μs)

-- benchmarking Normal/LargeCycle
-- time                 68.82 ms   (67.18 ms .. 70.81 ms)
--                      0.999 R²   (0.997 R² .. 1.000 R²)
-- mean                 67.68 ms   (67.26 ms .. 68.59 ms)
-- std dev              1.074 ms   (618.2 μs .. 1.602 ms)

-- benchmarking Poisson
-- time                 72.94 ms   (63.07 ms .. 87.73 ms)
--                      0.953 R²   (0.920 R² .. 1.000 R²)
-- mean                 64.76 ms   (62.84 ms .. 71.62 ms)
-- std dev              5.785 ms   (783.9 μs .. 10.08 ms)
-- variance introduced by outliers: 26% (moderately inflated)

-- benchmarking MC3/MC3 2
-- time                 13.08 ms   (12.73 ms .. 13.44 ms)
--                      0.993 R²   (0.986 R² .. 0.997 R²)
-- mean                 13.41 ms   (13.16 ms .. 13.72 ms)
-- std dev              682.7 μs   (520.3 μs .. 874.0 μs)
-- variance introduced by outliers: 22% (moderately inflated)

-- benchmarking MC3/MC3 3
-- time                 19.19 ms   (18.86 ms .. 19.59 ms)
--                      0.998 R²   (0.996 R² .. 1.000 R²)
-- mean                 19.28 ms   (19.11 ms .. 19.51 ms)
-- std dev              454.1 μs   (339.1 μs .. 608.4 μs)

-- benchmarking MC3/MC3 4
-- time                 25.01 ms   (24.21 ms .. 25.66 ms)
--                      0.997 R²   (0.996 R² .. 0.999 R²)
-- mean                 24.21 ms   (23.99 ms .. 24.55 ms)
-- std dev              606.1 μs   (414.7 μs .. 738.5 μs)

-- benchmarking MC3/MC3 5
-- time                 28.39 ms   (26.99 ms .. 29.34 ms)
--                      0.995 R²   (0.990 R² .. 0.999 R²)
-- mean                 31.13 ms   (30.09 ms .. 33.49 ms)
-- std dev              3.009 ms   (984.0 μs .. 4.319 ms)
-- variance introduced by outliers: 40% (moderately inflated)

-- benchmarking MC3/MC3 10
-- time                 57.25 ms   (56.98 ms .. 57.61 ms)
--                      1.000 R²   (1.000 R² .. 1.000 R²)
-- mean                 57.46 ms   (57.34 ms .. 57.56 ms)
-- std dev              192.4 μs   (140.1 μs .. 284.0 μs)