packages feed

yapb-0.2.5: src/util/ParserTime.hs

module ParserTime(startTime,finishTime,toSecond) where

import CommonParserUtil

import qualified Control.Monad.Trans.State.Lazy as ST
import Control.Monad.Trans(lift)
import System.CPUTime
import Text.Printf

startTime :: ST.StateT (LexerParserState a) IO Integer
startTime = lift getCPUTime

finishTime :: Integer -> ST.StateT (LexerParserState a) IO ()
finishTime sTime = 
  do fTime <- lift getCPUTime
     -- lift ( putStrLn $ "parse time: start time: " ++ show sTime )
     -- lift ( putStrLn $ "parse time: finish time: " ++ show fTime )
     lift ( printf "parse time: %6.2fs\n" (toSecond (fTime - sTime)) )

toSecond :: Integer -> Float
toSecond cpuTime = fromIntegral cpuTime * 1e-12