perf-0.12.0.1: Low-level run time measurement.
Safe HaskellSafe-Inferred
LanguageGHC2021

Perf.Report

Description

Reporting on performance, potentially checking versus a canned results.

Synopsis

Documentation

type Name = String Source #

Benchmark name

data Header Source #

Whether to include header information.

Constructors

Header 
NoHeader 

Instances

Instances details
Generic Header Source # 
Instance details

Defined in Perf.Report

Associated Types

type Rep Header :: Type -> Type #

Methods

from :: Header -> Rep Header x #

to :: Rep Header x -> Header #

Show Header Source # 
Instance details

Defined in Perf.Report

Eq Header Source # 
Instance details

Defined in Perf.Report

Methods

(==) :: Header -> Header -> Bool #

(/=) :: Header -> Header -> Bool #

type Rep Header Source # 
Instance details

Defined in Perf.Report

type Rep Header = D1 ('MetaData "Header" "Perf.Report" "perf-0.12.0.1-DwndM50BoxOBUtUp9NKWs5" 'False) (C1 ('MetaCons "Header" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NoHeader" 'PrefixI 'False) (U1 :: Type -> Type))

parseHeader :: Parser Header Source #

Command-line parser for Header

data CompareLevels Source #

Levels of geometric difference in compared performance that triggers reporting.

Instances

Instances details
Show CompareLevels Source # 
Instance details

Defined in Perf.Report

Eq CompareLevels Source # 
Instance details

Defined in Perf.Report

defaultCompareLevels :: CompareLevels Source #

>>> defaultCompareLevels
CompareLevels {errorLevel = 0.2, warningLevel = 5.0e-2, improvedLevel = 5.0e-2}

data ReportOptions Source #

Options for production of a performance report.

Instances

Instances details
Generic ReportOptions Source # 
Instance details

Defined in Perf.Report

Associated Types

type Rep ReportOptions :: Type -> Type #

Show ReportOptions Source # 
Instance details

Defined in Perf.Report

Eq ReportOptions Source # 
Instance details

Defined in Perf.Report

type Rep ReportOptions Source # 
Instance details

Defined in Perf.Report

defaultReportOptions :: ReportOptions Source #

Default options

>>> defaultReportOptions
ReportOptions {reportN = 1000, reportStatDType = StatAverage, reportMeasureType = MeasureTime, reportGolden = Golden {golden = "other/bench.perf", check = True, record = False}, reportHeader = Header, reportCompare = CompareLevels {errorLevel = 0.2, warningLevel = 5.0e-2, improvedLevel = 5.0e-2}}

infoReportOptions :: ParserInfo ReportOptions Source #

Default command-line parser.

report :: ReportOptions -> Map [Text] [Double] -> IO () Source #

Report results

If a goldenFile is checked, and performance has degraded, the function will exit with ExitFailure so that 'cabal bench' and other types of processes can signal performance issues.

reportMain :: Name -> PerfT IO [[Double]] a -> IO () Source #

Run and report a benchmark to the console. For example,

reportMain "foo" (fap "sum" sum [1..1000]) would:

  • run a benchmark for summing the numbers 1 to a thousand.
  • look for saved performance data in other/foo-1000-MeasureTime-StatAverage.perf
  • report on performance in isolation or versus the canned data file if it exists.
  • exit with failure if the performace had degraded.

reportMainWith :: ReportOptions -> Name -> PerfT IO [[Double]] a -> IO () Source #

Run and report a benchmark to the console with the supplied options.

writeResult :: FilePath -> Map [Text] Double -> IO () Source #

Write results to file

readResult :: FilePath -> IO (Either String (Map [Text] Double)) Source #

Read results from a file.

data CompareResult Source #

Comparison data between two results.

Instances

Instances details
Show CompareResult Source # 
Instance details

Defined in Perf.Report

Eq CompareResult Source # 
Instance details

Defined in Perf.Report

compareNote :: Ord a => CompareLevels -> Map a Double -> Map a Double -> Map a CompareResult Source #

Compare two results and produce some notes given level triggers.

reportOrg2D :: Map [Text] Text -> IO () Source #

Format a result as a table.

data Golden Source #

Golden file options.

Constructors

Golden 

Fields

Instances

Instances details
Generic Golden Source # 
Instance details

Defined in Perf.Report

Associated Types

type Rep Golden :: Type -> Type #

Methods

from :: Golden -> Rep Golden x #

to :: Rep Golden x -> Golden #

Show Golden Source # 
Instance details

Defined in Perf.Report

Eq Golden Source # 
Instance details

Defined in Perf.Report

Methods

(==) :: Golden -> Golden -> Bool #

(/=) :: Golden -> Golden -> Bool #

type Rep Golden Source # 
Instance details

Defined in Perf.Report

type Rep Golden = D1 ('MetaData "Golden" "Perf.Report" "perf-0.12.0.1-DwndM50BoxOBUtUp9NKWs5" 'False) (C1 ('MetaCons "Golden" 'PrefixI 'True) (S1 ('MetaSel ('Just "golden") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: (S1 ('MetaSel ('Just "check") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "record") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))

defaultGolden :: Golden Source #

Default filepath is "other/bench.perf"

parseGolden :: Parser Golden Source #

Parse command-line golden file options.

replaceDefaultFilePath :: FilePath -> ReportOptions -> ReportOptions Source #

Replace the Golden file path with the suggested stem, but only if the user did not specify a specific file path at the command line.