-- | == Introduction -- -- @perf@ provides tools for measuring the runtime performance of Haskell functions. It includes: -- -- - time measurement via the [clock](https://hackage.haskell.org/package/clock) library. -- -- - a polymorphic approach to what a 'Measure' is so that a wide variety of measurements such as counting, space and time measurement can share 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' -- -- - reporting functionality encapsulated in 'Perf.Report'. @perf@ can be run via 'cabal bench' and will, for example, error on performance degradation; see the project's cabal file for an example. module Perf ( -- * re-exports module Perf.Types, -- | Representation of what a Performance 'Measure' is. module Perf.Measure, -- | Low-level time performance 'Measure' counting 'Nanos' module Perf.Time, -- | Low-level space performance 'Measure's based on GHC's allocation statistics. module Perf.Space, -- | Simple loop counter module Perf.Count, -- | Various (fast loop) algorithms that have been used for testing perf functionality. module Perf.Algos, -- | Order of complexity computations module Perf.BigO, -- | Reporting module Perf.Report, -- | Statistical support module Perf.Stats, ) where import Perf.Algos import Perf.BigO import Perf.Count import Perf.Measure import Perf.Report import Perf.Space import Perf.Stats import Perf.Time import Perf.Types import Prelude hiding (cycle)