14 lines
470 B
Haskell
14 lines
470 B
Haskell
import System.CPUTime
|
|
|
|
-- 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 (\x -> f x `seq` return ())
|