vector-builder-0.3.3.1: foldl-benchmark/Main.hs
module Main where
import Prelude
import Criterion
import Criterion.Main
import qualified Control.Foldl as A
import qualified Data.Vector as F
import qualified VectorBuilder.Builder as N
import qualified VectorBuilder.Vector as O
main =
defaultMain [group 1000, group 10000, group 100000, group 1000000, group 10000000, group 100000000]
where
group size =
bgroup (show size)
[
bench "vector-builder" (nf foldWithBuilder input),
bench "default" (nf foldDefault input)
]
where
input =
[0..size]
foldWithBuilder input =
A.fold (A.foldMap N.singleton O.build) input :: Vector Int
foldDefault input =
runST (A.foldM A.vector input) :: Vector Int