packages feed

bytestring-strict-builder-0.4.3: benchmarks/Main.hs

module Main where

import Prelude hiding (concat)
import Criterion.Main
import ByteString.StrictBuilder


main =
  defaultMain [leftAppends, rightAppends, concat]

leftAppends :: Benchmark
leftAppends =
  bench "leftAppends" $ whnf action $! replicate 1000 $ bytes "abc"
  where
    action bytesList =
      builderBytes builder
      where
        builder =
          foldl' (<>) mempty bytesList

rightAppends :: Benchmark
rightAppends =
  bench "rightAppends"  $ whnf action $! replicate 1000 $ bytes "abc"
  where
    action bytesList =
      builderBytes builder
      where
        builder =
          foldr (<>) mempty bytesList

concat :: Benchmark
concat =
  bench "concat"  $ whnf action $! replicate 10000 $ bytes "abc"
  where
    action bytesList =
      builderBytes (mconcat bytesList)