arena-0.1: bench/bench.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-}
module Main where
import Criterion.Main
import Data.Semigroup
import Database.Arena
import System.Directory
prepDirectory :: IO ()
prepDirectory = do
createDirectoryIfMissing True "test_data"
removeDirectoryRecursive "test_data"
createDirectoryIfMissing True "test_data/journal"
createDirectoryIfMissing True "test_data/data"
main = defaultMain [
bgroup "inserts" [ bench "20" . nfIO $ inserts 20
, bench "10000" . nfIO $ inserts 10000]
]
startTestArena :: Int -> IO (ArenaDB (Sum Int, Sum Int) Int Int)
startTestArena n = startArena ((1,) . Sum) (getSum . snd) ((succ n <=) . getSum . fst) "test_data"
inserts :: Int -> IO ()
inserts n = do
prepDirectory
ad <- startTestArena n
runArena ad $ mapM_ addData [1..n]