packages feed

rrb-vector-0.2.2.0: bench/Traverse.hs

{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE UnboxedTuples #-}

import Control.Monad (join)
import Data.Foldable
import Data.Functor ((<&>))

import qualified Data.RRBVector as RRB
import Test.Tasty.Bench

default (Int)

main :: IO ()
main = defaultMain $ [10, 100, 1_000, 10_000, 100_000] <&> \n ->
    let !v = RRB.fromList [1 .. n]
    in bgroup (show n)
        [ bench "Vector" $ whnf (join (<>)) v
        , bench "List" $ whnf (join (\xs ys -> RRB.fromList (toList xs <> toList ys))) v
        ]