diff options
Diffstat (limited to 'bench.hs')
-rw-r--r-- | bench.hs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/bench.hs b/bench.hs new file mode 100644 index 0000000..0f9e474 --- /dev/null +++ b/bench.hs @@ -0,0 +1,38 @@ +import Criterion.Main +import Math.LinProg.LP +import Math.LinProg.LPSolve +import Math.LinProg.Types + +benchLP :: Int -> IO (Maybe ResultCode, [(Int, Double)]) +benchLP n = + solve $ obj $ sum $ map var [1..n] + +benchEq :: Int -> [(Int, Double)] +benchEq n = varTerms $ sum $ map var [1..n] + +benchVars :: Int -> [Int] +benchVars n = vars $ sum $ map var [1..n] + +benchCompile :: Int -> CompilerS Double String +benchCompile n = compile $ obj $ sum $ map (var . show) [1..n] + +benchShow :: Int -> IO () +benchShow n = print (benchCompile n) + +main = defaultMain [ + bgroup "compile" [ bench "100" $ whnf benchCompile 100 + , bench "1000" $ whnf benchCompile 1000 + , bench "10000" $ whnf benchCompile 10000 ] + --,bgroup "compile-show" [ bench "100" $ whnfIO (benchShow 100) + -- , bench "1000" $ whnfIO (benchShow 1000) + -- , bench "10000" $ whnfIO (benchShow 10000) ] + ,bgroup "vars" [ bench "100" $ whnf benchVars 100 + , bench "1000" $ whnf benchVars 1000 + , bench "10000" $ whnf benchVars 10000 ] + ,bgroup "eq" [ bench "100" $ whnf benchEq 100 + , bench "1000" $ whnf benchEq 1000 + , bench "10000" $ whnf benchEq 10000 ] + ,bgroup "LP" [ bench "100" $ whnfIO (benchLP 100) + , bench "1000" $ whnfIO (benchLP 1000) + , bench "10000" $ whnfIO (benchLP 10000)] + ] |