on master help sign in
Just for completeness, a read-file benchmark
commit70f5697afd4a55cce9dbb7dc25cc61187ecc34dd authorBryan O'Sullivan <bos@serpentine.com> dateTue 25 Jan 2011, 23:45 (16 years ago) parent03cb430
1 file changed+31
benchmarks/ReadFile.hs+31
benchmarks/ReadFile.hsnew file+31
@@ -0,0 +1,31 @@
1+{-# LANGUAGE BangPatterns, OverloadedStrings #-}
2+
3+import Control.DeepSeq
4+import Control.Exception
5+import Control.Monad
6+import Data.Aeson
7+import Data.Aeson.Parser
8+import Data.Attoparsec
9+import Data.Time.Clock
10+import System.Environment (getArgs)
11+import System.IO
12+import qualified Data.ByteString as B
13+
14+main = do
15+ (cnt:args) <- getArgs
16+ let count = read cnt :: Int
17+ forM_ args $ \arg -> bracket (openFile arg ReadMode) hClose $ \h -> do
18+ putStrLn $ arg ++ ":"
19+ start <- getCurrentTime
20+ let loop !n
21+ | n >= count = return ()
22+ | otherwise = do
23+ let go = do
24+ s <- B.hGet h 16384
25+ if B.null s
26+ then loop (n+1)
27+ else go
28+ go
29+ loop 0
30+ end <- getCurrentTime
31+ putStrLn $ " " ++ show (diffUTCTime end start)