@@ -5,13 +5,12 @@ module Main
8−import Criterion.Main (Benchmark, defaultMain)
8+import Criterion.Main (Benchmark, defaultMain, bgroup)
9import System.FilePath ((</>))
9import System.FilePath ((</>))
10import System.IO (IOMode (WriteMode), openFile, hSetEncoding, utf8)
10import System.IO (IOMode (WriteMode), openFile, hSetEncoding, utf8)
12import qualified Data.Text.Benchmarks.Builder as Builder
12import qualified Data.Text.Benchmarks.Builder as Builder
13import qualified Data.Text.Benchmarks.CaseMap as CaseMap
13import qualified Data.Text.Benchmarks.CaseMap as CaseMap
14−import qualified Data.Text.Benchmarks.Cut as Cut
15import qualified Data.Text.Benchmarks.DecodeUtf8 as DecodeUtf8
14import qualified Data.Text.Benchmarks.DecodeUtf8 as DecodeUtf8
16import qualified Data.Text.Benchmarks.EncodeUtf8 as EncodeUtf8
15import qualified Data.Text.Benchmarks.EncodeUtf8 as EncodeUtf8
17import qualified Data.Text.Benchmarks.Equality as Equality
16import qualified Data.Text.Benchmarks.Equality as Equality
@@ -27,6 +26,8 @@ import qualified Data.Text.Benchmarks.Sort as Sort
27import qualified Data.Text.Benchmarks.StripBrackets as StripBrackets
26import qualified Data.Text.Benchmarks.StripBrackets as StripBrackets
28import qualified Data.Text.Benchmarks.WordCount as WordCount
27import qualified Data.Text.Benchmarks.WordCount as WordCount
29+import qualified Data.Text.Benchmarks.Programs.Cut as Programs.Cut
30main :: IO ()
31main :: IO ()
31main = benchmarks >>= defaultMain
32main = benchmarks >>= defaultMain
@@ -34,10 +35,11 @@ benchmarks :: IO [Benchmark]
34benchmarks = do
35benchmarks = do
35 sink <- openFile "/dev/null" WriteMode
36 sink <- openFile "/dev/null" WriteMode
36 hSetEncoding sink utf8
37 hSetEncoding sink utf8
39+ -- Traditional benchmarks
37− sequence
40+ bs <- sequence
38 [ Builder.benchmark
41 [ Builder.benchmark
39 , CaseMap.benchmark (tf "russian.txt") sink
42 , CaseMap.benchmark (tf "russian.txt") sink
40− , Cut.benchmark (tf "russian.txt") sink 30 60
41 , DecodeUtf8.benchmark (tf "russian.txt")
43 , DecodeUtf8.benchmark (tf "russian.txt")
42 , EncodeUtf8.benchmark sink "επανάληψη 竺法蘭共譯"
44 , EncodeUtf8.benchmark sink "επανάληψη 竺法蘭共譯"
43 , Equality.benchmark (tf "japanese.txt")
45 , Equality.benchmark (tf "japanese.txt")
@@ -53,6 +55,13 @@ benchmarks = do
53 , StripBrackets.benchmark (tf "russian.txt") sink
55 , StripBrackets.benchmark (tf "russian.txt") sink
54 , WordCount.benchmark (tf "russian.txt")
56 , WordCount.benchmark (tf "russian.txt")
59+ -- Program-like benchmarks
60+ ps <- bgroup "Programs" `fmap` sequence
61+ [ Programs.Cut.benchmark (tf "russian.txt") sink 20 40
57 -- Location of a test file
66 -- Location of a test file
58 tf = ("../text/test" </>)
67 tf = ("../text/test" </>)