rbst-0.0.0.0: benchmark/Benchmark.hs
import Gauge.Main
-- TODO:
-- [ ] Implement something similar to this example.
main :: IO ()
main = defaultMain []
-- {-# LANGUAGE CPP, FlexibleContexts, ScopedTypeVariables #-}
-- {-# OPTIONS_GHC -fno-warn-orphans #-}
--
-- import Criterion.Main
-- import Data.ByteString (ByteString, pack)
-- import Data.Hashable (Hashable)
-- import System.Random.MWC
-- import qualified Data.HashMap.Lazy as H
-- import qualified Data.IntMap as I
-- import qualified Data.Map as M
-- import qualified Data.Vector as V
-- import qualified Data.Vector.Algorithms.Intro as I
-- import qualified Data.Vector.Generic as G
-- import qualified Data.Vector.Unboxed as U
--
-- #if !MIN_VERSION_bytestring(0,10,0)
-- import Control.DeepSeq (NFData (..))
-- #endif
--
-- type V = U.Vector Int
-- type B = V.Vector ByteString
--
-- numbers :: IO (V, V, V)
-- numbers = do
-- random <- withSystemRandom . asGenIO $ \gen -> uniformVector gen 40000
-- let sorted = G.modify I.sort random
-- revsorted = G.reverse sorted
-- return (random, sorted, revsorted)
--
-- strings :: IO (B, B, B)
-- strings = do
-- random <- withSystemRandom . asGenIO $ \gen ->
-- V.replicateM 10000 $
-- (pack . U.toList) `fmap` (uniformVector gen =<< uniformR (1,16) gen)
-- let sorted = G.modify I.sort random
-- revsorted = G.reverse sorted
-- return (random, sorted, revsorted)
--
-- main :: IO ()
-- main = defaultMain [
-- env numbers $ \ ~(random,sorted,revsorted) ->
-- bgroup "Int" [
-- bgroup "IntMap" [
-- bench "sorted" $ whnf intmap sorted
-- , bench "random" $ whnf intmap random
-- , bench "revsorted" $ whnf intmap revsorted
-- ]
-- , bgroup "Map" [
-- bench "sorted" $ whnf mmap sorted
-- , bench "random" $ whnf mmap random
-- , bench "revsorted" $ whnf mmap revsorted
-- ]
-- , bgroup "HashMap" [
-- bench "sorted" $ whnf hashmap sorted
-- , bench "random" $ whnf hashmap random
-- , bench "revsorted" $ whnf hashmap revsorted
-- ]
-- ]
-- , env strings $ \ ~(random,sorted,revsorted) ->
-- bgroup "ByteString" [
-- bgroup "Map" [
-- bench "sorted" $ whnf mmap sorted
-- , bench "random" $ whnf mmap random
-- , bench "revsorted" $ whnf mmap revsorted
-- ]
-- , bgroup "HashMap" [
-- bench "sorted" $ whnf hashmap sorted
-- , bench "random" $ whnf hashmap random
-- , bench "revsorted" $ whnf hashmap revsorted
-- ]
-- ]
-- ]
--
-- hashmap :: (G.Vector v k, Hashable k, Eq k) => v k -> H.HashMap k Int
-- hashmap xs = G.foldl' (\m k -> H.insert k value m) H.empty xs
--
-- intmap :: G.Vector v Int => v Int -> I.IntMap Int
-- intmap xs = G.foldl' (\m k -> I.insert k value m) I.empty xs
--
-- mmap :: (G.Vector v k, Ord k) => v k -> M.Map k Int
-- mmap xs = G.foldl' (\m k -> M.insert k value m) M.empty xs
--
-- value :: Int
-- value = 31337
--
-- #if !MIN_VERSION_bytestring(0,10,0)
-- instance NFData ByteString where
-- rnf bs = bs `seq` ()
-- #endif