Commits

Bryan O'Sullivan committed b63aa2c

Just for completeness, a read-file benchmark

  • Participants
  • Parent commits 15a3834

Comments (0)

Files changed (1)

File benchmarks/ReadFile.hs

+{-# LANGUAGE BangPatterns, OverloadedStrings #-}
+
+import Control.DeepSeq
+import Control.Exception
+import Control.Monad
+import Data.Aeson
+import Data.Aeson.Parser
+import Data.Attoparsec
+import Data.Time.Clock
+import System.Environment (getArgs)
+import System.IO
+import qualified Data.ByteString as B
+
+main = do
+  (cnt:args) <- getArgs
+  let count = read cnt :: Int
+  forM_ args $ \arg -> bracket (openFile arg ReadMode) hClose $ \h -> do
+    putStrLn $ arg ++ ":"
+    start <- getCurrentTime
+    let loop !n
+            | n >= count = return ()
+            | otherwise = do
+          let go = do
+                s <- B.hGet h 16384
+                if B.null s
+                  then loop (n+1)
+                  else go
+          go
+    loop 0
+    end <- getCurrentTime
+    putStrLn $ "  " ++ show (diffUTCTime end start)