perf-0.10.1: src/Perf.hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RebindableSyntax #-}
{-# OPTIONS_GHC -Wall #-}
-- | == Introduction
--
-- /perf/ provides tools for measuring the runtime performance of Haskell functions. It includes:
--
-- - time measurement via reading the RDTSC register (TSC stands for "time stamp counter"), which is present on all x86 CPUs since the Pentium architecture. For more details, see https://en.wikipedia.org/wiki/Time_Stamp_Counter
--
-- - abstraction of what is a 'Measure' so that the library includes both space and time measurement with the same API.
--
-- - 'PerfT' which is a monad transformer designed to add the collection of performance information to existing code. Running the code produces a tuple of the original computation results, and a Map of performance measurements that were specified.
--
-- - functionality to determine performance order, in 'Perf.BigO'
--
-- Usage examples can be found in app/perf-explore.hs and the project's readme.org.
--
module Perf
( -- * re-exports
-- | Various (fast loop) algorithms that have been used for testing perf functionality.
module Perf.Algos,
-- | Low-level time performance 'Measure's counting 'Cycles'
module Perf.Time,
-- | Order of complexity computations
module Perf.BigO,
-- | Low-level space performance 'Measure's based on GHC's allocation statistics.
module Perf.Space,
-- | Reporting, including 'Golden' file functionality.
module Perf.Report,
module Perf.Stats,
module Perf.Types,
module Perf.Measure,
)
where
import Perf.Algos
import Perf.BigO
import Perf.Measure
import Perf.Report
import Perf.Space
import Perf.Stats
import Perf.Time
import Perf.Types
import Prelude hiding (cycle)