monad-timing-0.1.0.0: Monad transformer for recording timing events

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Timing

Contents

Synopsis

Introduction

This package provides an mtl-like interface for timing subcomponents of an arbitrary computation.

MonadTiming

class MonadTiming m where Source #

Monads that support timing subcomputations.

Minimal complete definition

timeGroup

Methods

timeGroup :: Tag -> m a -> m a Source #

Time the given computation with the given tag.

Instances

type TimingTree = Tree (Tag, NominalDiffTime) Source #

A tree of timing events.

type Tag = String Source #

Tags are strings.

TimingT, general timing handler

newtype TimingT m a Source #

A monad transformer that records timing events.

Note that this module exports both _runTimingT and runTimingT.

  • _runTimingT returns the timing events verbatim without sanitization.
  • runTimingT combines trees with the same Tag and tags the duration of the entire computation with the special tag <all>.

Constructors

TimingT 

Fields

Instances

MonadTrans TimingT Source # 

Methods

lift :: Monad m => m a -> TimingT m a #

MonadRWS r w s m => MonadRWS r w s (TimingT m) Source # 
MonadBase b m => MonadBase b (TimingT m) Source # 

Methods

liftBase :: b α -> TimingT m α #

MonadBaseControl b m => MonadBaseControl b (TimingT m) Source # 

Associated Types

type StM (TimingT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (TimingT m) b -> b a) -> TimingT m a #

restoreM :: StM (TimingT m) a -> TimingT m a #

MonadError e m => MonadError e (TimingT m) Source # 

Methods

throwError :: e -> TimingT m a #

catchError :: TimingT m a -> (e -> TimingT m a) -> TimingT m a #

MonadReader r m => MonadReader r (TimingT m) Source # 

Methods

ask :: TimingT m r #

local :: (r -> r) -> TimingT m a -> TimingT m a #

reader :: (r -> a) -> TimingT m a #

MonadState s m => MonadState s (TimingT m) Source # 

Methods

get :: TimingT m s #

put :: s -> TimingT m () #

state :: (s -> (a, s)) -> TimingT m a #

MonadWriter w m => MonadWriter w (TimingT m) Source # 

Methods

writer :: (a, w) -> TimingT m a #

tell :: w -> TimingT m () #

listen :: TimingT m a -> TimingT m (a, w) #

pass :: TimingT m (a, w -> w) -> TimingT m a #

Monad m => Monad (TimingT m) Source # 

Methods

(>>=) :: TimingT m a -> (a -> TimingT m b) -> TimingT m b #

(>>) :: TimingT m a -> TimingT m b -> TimingT m b #

return :: a -> TimingT m a #

fail :: String -> TimingT m a #

Functor m => Functor (TimingT m) Source # 

Methods

fmap :: (a -> b) -> TimingT m a -> TimingT m b #

(<$) :: a -> TimingT m b -> TimingT m a #

MonadFix m => MonadFix (TimingT m) Source # 

Methods

mfix :: (a -> TimingT m a) -> TimingT m a #

Applicative m => Applicative (TimingT m) Source # 

Methods

pure :: a -> TimingT m a #

(<*>) :: TimingT m (a -> b) -> TimingT m a -> TimingT m b #

(*>) :: TimingT m a -> TimingT m b -> TimingT m b #

(<*) :: TimingT m a -> TimingT m b -> TimingT m a #

MonadIO m => MonadIO (TimingT m) Source # 

Methods

liftIO :: IO a -> TimingT m a #

Alternative m => Alternative (TimingT m) Source # 

Methods

empty :: TimingT m a #

(<|>) :: TimingT m a -> TimingT m a -> TimingT m a #

some :: TimingT m a -> TimingT m [a] #

many :: TimingT m a -> TimingT m [a] #

MonadPlus m => MonadPlus (TimingT m) Source # 

Methods

mzero :: TimingT m a #

mplus :: TimingT m a -> TimingT m a -> TimingT m a #

MonadThrow m => MonadThrow (TimingT m) Source # 

Methods

throwM :: Exception e => e -> TimingT m a #

MonadCatch m => MonadCatch (TimingT m) Source # 

Methods

catch :: Exception e => TimingT m a -> (e -> TimingT m a) -> TimingT m a #

MonadMask m => MonadMask (TimingT m) Source # 

Methods

mask :: ((forall a. TimingT m a -> TimingT m a) -> TimingT m b) -> TimingT m b #

uninterruptibleMask :: ((forall a. TimingT m a -> TimingT m a) -> TimingT m b) -> TimingT m b #

MonadCont m => MonadCont (TimingT m) Source # 

Methods

callCC :: ((a -> TimingT m b) -> TimingT m a) -> TimingT m a #

MonadIO m => MonadTiming (TimingT m) Source # 

Methods

timeGroup :: Tag -> TimingT m a -> TimingT m a Source #

type StM (TimingT m) a Source # 
type StM (TimingT m) a = StM m a

runTimingT :: MonadIO m => TimingT m a -> m (a, TimingTree) Source #

Run the giving TimingT computation, recording timing events.

execTimingT :: MonadIO m => TimingT m b -> m TimingTree Source #

Run a TimingT computation, discarding the result.

NoTimingT, a no-timing handler

newtype NoTimingT m a Source #

Run a computation without recording any timing data.

Constructors

NoTimingT 

Fields

Instances

MonadTrans NoTimingT Source # 

Methods

lift :: Monad m => m a -> NoTimingT m a #

MonadRWS r w s m => MonadRWS r w s (NoTimingT m) Source # 
MonadBase b m => MonadBase b (NoTimingT m) Source # 

Methods

liftBase :: b α -> NoTimingT m α #

MonadBaseControl b m => MonadBaseControl b (NoTimingT m) Source # 

Associated Types

type StM (NoTimingT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (NoTimingT m) b -> b a) -> NoTimingT m a #

restoreM :: StM (NoTimingT m) a -> NoTimingT m a #

MonadError e m => MonadError e (NoTimingT m) Source # 

Methods

throwError :: e -> NoTimingT m a #

catchError :: NoTimingT m a -> (e -> NoTimingT m a) -> NoTimingT m a #

MonadReader r m => MonadReader r (NoTimingT m) Source # 

Methods

ask :: NoTimingT m r #

local :: (r -> r) -> NoTimingT m a -> NoTimingT m a #

reader :: (r -> a) -> NoTimingT m a #

MonadState s m => MonadState s (NoTimingT m) Source # 

Methods

get :: NoTimingT m s #

put :: s -> NoTimingT m () #

state :: (s -> (a, s)) -> NoTimingT m a #

MonadWriter w m => MonadWriter w (NoTimingT m) Source # 

Methods

writer :: (a, w) -> NoTimingT m a #

tell :: w -> NoTimingT m () #

listen :: NoTimingT m a -> NoTimingT m (a, w) #

pass :: NoTimingT m (a, w -> w) -> NoTimingT m a #

Monad m => Monad (NoTimingT m) Source # 

Methods

(>>=) :: NoTimingT m a -> (a -> NoTimingT m b) -> NoTimingT m b #

(>>) :: NoTimingT m a -> NoTimingT m b -> NoTimingT m b #

return :: a -> NoTimingT m a #

fail :: String -> NoTimingT m a #

Functor m => Functor (NoTimingT m) Source # 

Methods

fmap :: (a -> b) -> NoTimingT m a -> NoTimingT m b #

(<$) :: a -> NoTimingT m b -> NoTimingT m a #

MonadFix m => MonadFix (NoTimingT m) Source # 

Methods

mfix :: (a -> NoTimingT m a) -> NoTimingT m a #

Applicative m => Applicative (NoTimingT m) Source # 

Methods

pure :: a -> NoTimingT m a #

(<*>) :: NoTimingT m (a -> b) -> NoTimingT m a -> NoTimingT m b #

(*>) :: NoTimingT m a -> NoTimingT m b -> NoTimingT m b #

(<*) :: NoTimingT m a -> NoTimingT m b -> NoTimingT m a #

MonadIO m => MonadIO (NoTimingT m) Source # 

Methods

liftIO :: IO a -> NoTimingT m a #

Alternative m => Alternative (NoTimingT m) Source # 

Methods

empty :: NoTimingT m a #

(<|>) :: NoTimingT m a -> NoTimingT m a -> NoTimingT m a #

some :: NoTimingT m a -> NoTimingT m [a] #

many :: NoTimingT m a -> NoTimingT m [a] #

MonadPlus m => MonadPlus (NoTimingT m) Source # 

Methods

mzero :: NoTimingT m a #

mplus :: NoTimingT m a -> NoTimingT m a -> NoTimingT m a #

MonadThrow m => MonadThrow (NoTimingT m) Source # 

Methods

throwM :: Exception e => e -> NoTimingT m a #

MonadCatch m => MonadCatch (NoTimingT m) Source # 

Methods

catch :: Exception e => NoTimingT m a -> (e -> NoTimingT m a) -> NoTimingT m a #

MonadMask m => MonadMask (NoTimingT m) Source # 

Methods

mask :: ((forall a. NoTimingT m a -> NoTimingT m a) -> NoTimingT m b) -> NoTimingT m b #

uninterruptibleMask :: ((forall a. NoTimingT m a -> NoTimingT m a) -> NoTimingT m b) -> NoTimingT m b #

MonadCont m => MonadCont (NoTimingT m) Source # 

Methods

callCC :: ((a -> NoTimingT m b) -> NoTimingT m a) -> NoTimingT m a #

MonadTiming (NoTimingT m) Source # 

Methods

timeGroup :: Tag -> NoTimingT m a -> NoTimingT m a Source #

type StM (NoTimingT m) a Source # 
type StM (NoTimingT m) a = StM m a