debug-time-0.1.0.1: Debug.Trace equivalent for timing computations

Safe HaskellNone
LanguageHaskell2010

Debug.Time

Description

Here's how you can use this package

module Main where

import Debug.Time

-- | Naive implementation
fibs :: [Int]
fibs = map (fibAt . maybeTimer) [1..]
    where maybeTimer 10 = startTimer "10-30" 10
          maybeTimer 30 = traceTimer "10-30" 30
          maybeTimer 20 = startTimer "20-40" 20
          maybeTimer 40 = traceTimer "20-40" 40
          maybeTimer n  = n

fibAt :: Int -> Int
fibAt 1 = 1
fibAt 2 = 1
fibAt n = fibAt (n - 1) + fibAt (n - 2)

main :: IO ()
main = do
    initializeTimers
    putStrLn "Calculating the first 40 fibonacci numbers while tracing the time elapsed between"
    putStrLn "the computations 10-30 and 20-40"
    mapM_ print (take 40 fibs)

Synopsis

Documentation

startTimer :: String -> a -> a Source

Ties the evaluation of the value with the start of a timer with the given name.

traceTimer :: String -> a -> a Source

Ties the evaluation of the value with an action tracing the elapsed time since the start of the timer.

restartTimer :: String -> a -> a Source

Synonym for startTimer.

initializeTimers :: IO () Source

Initializes the timer store. This makes the first measurement more reliable.