diff options
author | Justin Bedo <cu@cua0.org> | 2024-03-19 16:03:38 +1100 |
---|---|---|
committer | Justin Bedo <cu@cua0.org> | 2024-03-20 16:04:24 +1100 |
commit | afba6bce9c2e8ff77da2848f57f443088861db5d (patch) | |
tree | 9242fb357da4ff6ed9684d25ff150f4da1981360 /bench.hs | |
parent | b7dcf3b7452e29fc4366852fe8ff6e3fa94ae555 (diff) |
add benchmarking
Diffstat (limited to 'bench.hs')
-rw-r--r-- | bench.hs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/bench.hs b/bench.hs new file mode 100644 index 0000000..561eef1 --- /dev/null +++ b/bench.hs @@ -0,0 +1,50 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE ScopedTypeVariables #-} + +module Main where + +import Control.Monad +import Criterion +import Criterion.Main +import qualified Data.ByteString.Char8 as B +import Data.FastQ +import Data.Function +import qualified Streamly.Data.Fold as F +import qualified Streamly.Data.Stream as S +import qualified Streamly.Data.Unfold as U +import Test.QuickCheck.Arbitrary +import Test.QuickCheck.Gen +import Prelude hiding (Read) +import System.IO.Temp +import Options.Generic +import qualified Dedumi as D +import Data.Maybe +import qualified Data.Text as T +import Debug.Trace + +instance Arbitrary Read where + arbitrary = Read <$> genStr <*> genStr <*> genStr + where + genBS = fmap B.pack . listOf1 . elements + genStr = genBS $ [' ' .. '~'] + +--sizes = [2 ^ i | i <- [11 .. 19]] +sizes = [2*8192] + +setupEnv root size = do + let fileroot = root <> "/" <> show size + a = fileroot <> "a" + b = fileroot <> "b" + rp <- replicateM size $ generate $ arbitrary + S.unfold U.fromList rp & unparse a b + pure (a, b) + +main :: IO () +main = withSystemTempDirectory "dedumi-bench" $ \tmpdir -> + defaultMain + [ bgroup "main" $ map (\s -> env (setupEnv tmpdir s) $ \ ~(a,b) -> bench (show s) (run (T.pack a) (T.pack b))) sizes + ] + +run fq1 fq2 = nfAppIO D.go $ fromJust $ unwrapRecordPure [fq1, fq2, "/dev/null", "/dev/null"] |