set-cover-0.1: example/Mastermind/Benchmark.hs
module Main where
import qualified Mastermind.Test as Test
import qualified Test.QuickCheck as QC
import System.TimeIt (timeIt)
import Data.Foldable (forM_, )
main :: IO ()
main =
forM_ Test.tests $ \(name, (_count, prop)) -> do
putStr $ name ++ ": "
timeIt $ QC.quickCheckWith (QC.stdArgs {QC.maxSuccess = 1000}) prop
{-
Shorter times without UseSymbol are a bit misleading,
because the ten selected consistentCodes may contain duplicates.
let n = 4
let set = ['a'..'k']
fromList []
+++ OK, passed 1000 tests.
CPU time: 7.36s
+++ OK, passed 1000 tests.
CPU time: 44.06s
fromList [UseSymbolPos]
+++ OK, passed 1000 tests.
CPU time: 21.70s
+++ OK, passed 1000 tests.
CPU time: 134.35s
fromList [UseSymbol]
+++ OK, passed 1000 tests.
CPU time: 12.89s
+++ OK, passed 1000 tests.
CPU time: 38.74s
fromList [UseSymbol,UseSymbolPos]
+++ OK, passed 1000 tests.
CPU time: 33.16s
+++ OK, passed 1000 tests.
CPU time: 81.25s
fromList [UniqueSymbol]
+++ OK, passed 1000 tests.
CPU time: 0.88s
+++ OK, passed 1000 tests.
CPU time: 14.94s
fromList [UniqueSymbol,UseSymbolPos]
+++ OK, passed 1000 tests.
CPU time: 58.38s
+++ OK, passed 1000 tests.
CPU time: 266.46s
fromList [UniqueSymbol,UseSymbol]
+++ OK, passed 1000 tests.
CPU time: 1.34s
+++ OK, passed 1000 tests.
CPU time: 9.20s
fromList [UniqueSymbol,UseSymbol,UseSymbolPos]
+++ OK, passed 1000 tests.
CPU time: 44.60s
+++ OK, passed 1000 tests.
CPU time: 66.19s
-}
{-
With EvalRow (Maybe Eval) we get:
fromList []
+++ OK, passed 1000 tests.
CPU time: 7.89s
+++ OK, passed 1000 tests.
CPU time: 41.88s
fromList [UseSymbol]
+++ OK, passed 1000 tests.
CPU time: 10.57s
+++ OK, passed 1000 tests.
CPU time: 33.61s
fromList [UniqueSymbol]
+++ OK, passed 1000 tests.
CPU time: 0.95s
+++ OK, passed 1000 tests.
CPU time: 16.23s
fromList [UniqueSymbol,UseSymbol]
+++ OK, passed 1000 tests.
CPU time: 1.44s
+++ OK, passed 1000 tests.
CPU time: 9.08s
-}