- data BenchResult c = BenchResult {}
- concatBenchResult :: BenchResult c1 -> BenchResult c1
- collateBenchResult :: BenchResult Single -> BenchResult []
- statCollatedBenchResult :: BenchResult [] -> BenchResult Stats
- statBenchResult :: BenchResult Single -> BenchResult Stats
- compareBenchResults :: BenchResult Stats -> BenchResult Stats -> BenchResult StatsComparison
- compareBenchResultWith :: [BenchResult Stats] -> BenchResult Stats -> BenchResult StatsComparison
- compareManyBenchResults :: [BenchResult Stats] -> [BenchResult Stats] -> [BenchResult StatsComparison]
- predBenchResult :: (forall units. Real units => c units -> Bool) -> BenchResult c -> Bool
- swungBenchResult :: Double -> BenchResult StatsComparison -> Bool
- data BenchRunResult c = BenchRunResult {}
- appBenchRunResult :: ([BenchRunResult c1] -> b) -> BenchResult c1 -> b
- appRunResultAspects :: ([WithUnits (Aspect c1)] -> b) -> BenchRunResult c1 -> b
- liftBenchRunResult :: ([BenchRunResult c1] -> [BenchRunResult c2]) -> BenchResult c1 -> BenchResult c2
- liftBenchRunResult2 :: ([BenchRunResult c1] -> [BenchRunResult c2] -> [BenchRunResult c3]) -> BenchResult c1 -> BenchResult c2 -> BenchResult c3
- liftToAspectsOfBenchResult :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)]) -> BenchResult c1 -> BenchResult c2
- liftToAspectsOfBenchResult2 :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)] -> [WithUnits (Aspect c3)]) -> BenchResult c1 -> BenchResult c2 -> BenchResult c3
- liftRunResultAspects :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)]) -> BenchRunResult c1 -> BenchRunResult c2
- liftRunResultAspects2 :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)] -> [WithUnits (Aspect c3)]) -> BenchRunResult c1 -> BenchRunResult c2 -> BenchRunResult c3
Benchmark results
data BenchResult c Source
We include the name of the original benchmark to it's easy to lookup the results.
If the BenchResult
is carrying data derived directly by running a benchmark,
there will be an element of the benchResultRuns
for each iteration. On the other hand,
If the BenchResult
is carrying statistics or comparison data there should
be a single element with an index of 0. This is suggested usage, and adhered to by
the functions in this module, but not required.
Concatenation
concatBenchResult :: BenchResult c1 -> BenchResult c1Source
Concatenate the results of all runs.
The the resulting BenchResult
has a single BenchRunResult
with an index of 0, containing all aspects.
Collation
collateBenchResult :: BenchResult Single -> BenchResult []Source
Collate the aspects of each run. See collateWithUnits
for an explanation and example.
Statistics
statCollatedBenchResult :: BenchResult [] -> BenchResult StatsSource
Compute statistics from collated aspects of a run.
statBenchResult :: BenchResult Single -> BenchResult StatsSource
Collate the aspects, then compute statistics of a run.
Comparison
compareBenchResults :: BenchResult Stats -> BenchResult Stats -> BenchResult StatsComparisonSource
Compute comparisons of benchmark results.
Both results must have the same benchResultName
else error
.
compareBenchResultWith :: [BenchResult Stats] -> BenchResult Stats -> BenchResult StatsComparisonSource
Compute comparisons of benchmark result, looking up the baseline results from a given list.
If there are no matching baseline results then this creates a ComparisonNew
in the output.
compareManyBenchResults :: [BenchResult Stats] -> [BenchResult Stats] -> [BenchResult StatsComparison]Source
Compare some baseline results against new results.
If there are no matching baseline results then this creates a ComparisonNew
in the output.
predBenchResult :: (forall units. Real units => c units -> Bool) -> BenchResult c -> BoolSource
Return true if any of the aspect data in a result matches a given predicate.
swungBenchResult :: Double -> BenchResult StatsComparison -> BoolSource
Return true if any of the aspects have swung by more than a given fraction since last time.
For example, use 0.1
for 10 percent.
Benchmark run results
data BenchRunResult c Source
Holds the result of running a benchmark once.
BenchRunResult | |
|
Application functions
appBenchRunResult :: ([BenchRunResult c1] -> b) -> BenchResult c1 -> bSource
Apply a function to the aspects of a BenchRunResult
appRunResultAspects :: ([WithUnits (Aspect c1)] -> b) -> BenchRunResult c1 -> bSource
Apply a function to the aspects of a BenchRunResult
Lifting functions
liftBenchRunResult :: ([BenchRunResult c1] -> [BenchRunResult c2]) -> BenchResult c1 -> BenchResult c2Source
Lift a function to the BenchRunResult
in a BenchResult
liftBenchRunResult2 :: ([BenchRunResult c1] -> [BenchRunResult c2] -> [BenchRunResult c3]) -> BenchResult c1 -> BenchResult c2 -> BenchResult c3Source
Lift a binary function to the BenchResults
in a BenchResult
liftToAspectsOfBenchResult :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)]) -> BenchResult c1 -> BenchResult c2Source
Lift a function to the aspects of each BenchRunResult
.
liftToAspectsOfBenchResult2 :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)] -> [WithUnits (Aspect c3)]) -> BenchResult c1 -> BenchResult c2 -> BenchResult c3Source
Lift a binary function to the aspects of each BenchRunResult
.
liftRunResultAspects :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)]) -> BenchRunResult c1 -> BenchRunResult c2Source
Lift a function to the aspects of a BenchRunResult
liftRunResultAspects2 :: ([WithUnits (Aspect c1)] -> [WithUnits (Aspect c2)] -> [WithUnits (Aspect c3)]) -> BenchRunResult c1 -> BenchRunResult c2 -> BenchRunResult c3Source
Lift a binary function to the aspects of a BenchRunResult