on master help sign in
Benchmark readFile performance.
9eb2a7cBryan O'Sullivan
tests/Benchmarks.hs+12−1
@@ -9,11 +9,14 @@ import Criterion.Main
9import Data.Char
9import Data.Char
10import qualified Codec.Binary.UTF8.Generic as UTF8
10import qualified Codec.Binary.UTF8.Generic as UTF8
11import qualified Data.Text as TS
11import qualified Data.Text as TS
12+import qualified Data.Text.IO as TS
12import qualified Data.Text.Lazy as TL
13import qualified Data.Text.Lazy as TL
14+import qualified Data.Text.Lazy.IO as TL
13import qualified Data.List as L
15import qualified Data.List as L
14import qualified Data.Text.Encoding as TS
16import qualified Data.Text.Encoding as TS
15import qualified Data.Text.Lazy.Encoding as TL
17import qualified Data.Text.Lazy.Encoding as TL
16import qualified Criterion.MultiMap as M
18import qualified Criterion.MultiMap as M
19+import Control.DeepSeq
17import Criterion.Config
20import Criterion.Config
18import GHC.Base
21import GHC.Base
19
22
@@ -38,7 +41,8 @@ instance NFData B where
38 rnf (B b) = rnf b
41 rnf (B b) = rnf b
39
42
40main = do
43main = do
44+ let dataFile = "text/test/russian.txt"
41− bsa <- BS.readFile "text/test/russian.txt"
45+ bsa <- BS.readFile dataFile
42 let tsa = TS.decodeUtf8 bsa
46 let tsa = TS.decodeUtf8 bsa
43 tsb = TS.toUpper tsa
47 tsb = TS.toUpper tsa
44 tla = TL.fromChunks (TS.chunksOf 16376 tsa)
48 tla = TL.fromChunks (TS.chunksOf 16376 tsa)
@@ -192,6 +196,13 @@ main = do
192 , bench "bl" $ nf (BL.map f . BL.map f) bla
196 , bench "bl" $ nf (BL.map f . BL.map f) bla
193 , bench "l" $ nf (L.map f . L.map f) la
197 , bench "l" $ nf (L.map f . L.map f) la
194 ],
198 ],
199+ bgroup "readFile" [
200+ bench "ts" $ TS.readFile dataFile
201+ , bench "tl" $ nfIO (TL.readFile dataFile)
202+ , bench "bs" $ BS.readFile dataFile
203+ , bench "bl" $ nfIO (BL.length `fmap` BL.readFile dataFile)
204+ , bench "l" $ nfIO (length `fmap` readFile dataFile)
205+ ],
195 bgroup "replicate char" [
206 bgroup "replicate char" [
196 bench "ts" $ nf (TS.replicate bsa_len) (TS.singleton c)
207 bench "ts" $ nf (TS.replicate bsa_len) (TS.singleton c)
197 , bench "tl" $ nf (TL.replicate (fromIntegral bsa_len)) (TL.singleton c)
208 , bench "tl" $ nf (TL.replicate (fromIntegral bsa_len)) (TL.singleton c)