packages feed

vector-builder-0.3.2: foldl-benchmark/Main.hs

module Main where

import Prelude
import Bug
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
  [
    bench "vector-builder" (nf foldWithBuilder input),
    bench "default" (nf foldDefault input)
  ]
  where
    input =
      [0..1000]
    foldWithBuilder input =
      A.fold (A.foldMap N.singleton O.build) input :: Vector Int
    foldDefault input =
      runST (A.foldM A.vector input) :: Vector Int