@@ -5,13 +5,12 @@ module Main
55 ( main
66 ) where
77
8−import Criterion.Main (Benchmark, defaultMain)
8+import Criterion.Main (Benchmark, defaultMain, bgroup)
99import System.FilePath ((</>))
1010import System.IO (IOMode (WriteMode), openFile, hSetEncoding, utf8)
1111
1212import qualified Data.Text.Benchmarks.Builder as Builder
1313import qualified Data.Text.Benchmarks.CaseMap as CaseMap
14−import qualified Data.Text.Benchmarks.Cut as Cut
1514import qualified Data.Text.Benchmarks.DecodeUtf8 as DecodeUtf8
1615import qualified Data.Text.Benchmarks.EncodeUtf8 as EncodeUtf8
1716import qualified Data.Text.Benchmarks.Equality as Equality
@@ -27,6 +26,8 @@ import qualified Data.Text.Benchmarks.Sort as Sort
2726import qualified Data.Text.Benchmarks.StripBrackets as StripBrackets
2827import qualified Data.Text.Benchmarks.WordCount as WordCount
2928
29+import qualified Data.Text.Benchmarks.Programs.Cut as Programs.Cut
30+
3031main :: IO ()
3132main = benchmarks >>= defaultMain
3233
@@ -34,10 +35,11 @@ benchmarks :: IO [Benchmark]
3435benchmarks = do
3536 sink <- openFile "/dev/null" WriteMode
3637 hSetEncoding sink utf8
37− sequence
38+
39+ -- Traditional benchmarks
40+ bs <- sequence
3841 [ Builder.benchmark
3942 , CaseMap.benchmark (tf "russian.txt") sink
40− , Cut.benchmark (tf "russian.txt") sink 30 60
4143 , DecodeUtf8.benchmark (tf "russian.txt")
4244 , EncodeUtf8.benchmark sink "επανάληψη 竺法蘭共譯"
4345 , Equality.benchmark (tf "japanese.txt")
@@ -53,6 +55,13 @@ benchmarks = do
5355 , StripBrackets.benchmark (tf "russian.txt") sink
5456 , WordCount.benchmark (tf "russian.txt")
5557 ]
58+
59+ -- Program-like benchmarks
60+ ps <- bgroup "Programs" `fmap` sequence
61+ [ Programs.Cut.benchmark (tf "russian.txt") sink 20 40
62+ ]
63+
64+ return $ bs ++ [ps]
5665 where
5766 -- Location of a test file
5867 tf = ("../text/test" </>)