packages feed

chronograph-0.1.0.0: examples/Chrono.hs

-- | A simple example of how to use Chronograph.  We want to count the lines in
-- a file, and measure how long it takes.

module Main where

import Control.Applicative
import System.Environment
import Data.Chronograph

import Text.Printf

main :: IO ()
main = do
    args <- getArgs
    putStrLn "pure Chronograph"
    mapM_ procFile args
    putStrLn "IO Chronograph"
    mapM_ procIO args

procFile :: FilePath -> IO ()
procFile fp = do
    doc <- readFile fp
    let wc = length $ lines doc
    putStrLn $ formatOutput fp (chrono wc)
    
formatOutput :: FilePath -> Chronograph Int -> String
formatOutput fp chr = printf "%s :: %d, %s" fp (val chr) (show $ measure chr)

fileLinesIO :: FilePath -> IO Int
fileLinesIO fp = length . lines <$> readFile fp

procIO :: FilePath -> IO ()
procIO fp = do
  wc <- chronoIO $ fileLinesIO fp
  putStrLn $ formatOutput fp wc