on bebb340 help sign in
33 lines 1.2 kB history raw
1-- | Benchmarks simple file reading
2--
3-- Tested in this benchmark:
4--
5-- * Reading a file from the disk
6--
7module Benchmarks.FileRead
8 ( benchmark
9 ) where
11import Control.Exception (evaluate)
12import Criterion (Benchmark, bgroup, bench)
13import qualified Data.ByteString as SB
14import qualified Data.ByteString.Lazy as LB
15import qualified Data.Text as T
16import qualified Data.Text.Encoding as T
17import qualified Data.Text.IO as T
18import qualified Data.Text.Lazy as LT
19import qualified Data.Text.Lazy.Encoding as LT
20import qualified Data.Text.Lazy.IO as LT
22benchmark :: FilePath -> IO Benchmark
23benchmark p = return $ bgroup "FileRead"
24 [ bench "String" $ readFile p >>= evaluate . length
25 , bench "ByteString" $ SB.readFile p >>= evaluate . SB.length
26 , bench "LazyByteString" $ LB.readFile p >>= evaluate . LB.length
27 , bench "Text" $ T.readFile p >>= evaluate . T.length
28 , bench "LazyText" $ LT.readFile p >>= evaluate . LT.length
29 , bench "TextByteString" $
30 SB.readFile p >>= evaluate . T.length . T.decodeUtf8
31 , bench "LazyTextByteString" $
32 LB.readFile p >>= evaluate . LT.length . LT.decodeUtf8
33 ]