{-# 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)