14 lines
470 B
Haskell
14 lines
470 B
Haskell
import System.CPUTime (getCPUTime)
|
|
|
|
-- We assume the function we are timing is an IO monad computation
|
|
timeIt :: (Fractional c) => (a -> IO b) -> a -> IO c
|
|
timeIt action arg = do
|
|
startTime <- getCPUTime
|
|
action arg
|
|
finishTime <- getCPUTime
|
|
return $ fromIntegral (finishTime - startTime) / 1000000000000
|
|
|
|
-- Version for use with evaluating regular non-monadic functions
|
|
timeIt_ :: (Fractional c) => (a -> b) -> a -> IO c
|
|
timeIt_ f = timeIt ((`seq` return ()) . f)
|