criterion-to-html-0.0.0.1: src/Criterion/ToHtml/Result.hs
-- | Parse Criterion results
--
module Criterion.ToHtml.Result
( Result (..)
, parseCriterionCsv
, normalizeMeans
) where
import Criterion.ToHtml.Csv
-- | A criterion result
--
data Result = Result
{ resultName :: String
, resultMean :: Double
}
-- | Parse a Criterion CSV file
--
parseCriterionCsv :: String -> [Result]
parseCriterionCsv = map parseCriterionResult . drop 1 . parseCsv
-- | Parse a single result
--
parseCriterionResult :: Record -> Result
parseCriterionResult (name : mean : _) = Result name (read mean)
parseCriterionResult _ = error
"Criterion.ToHtml.Parse.parseCriterionResult: invalid CSV file"
normalizeMeans :: [Result] -> [(Result, Double)]
normalizeMeans [] = []
normalizeMeans results = map normalize results
where
normalize result = (result, resultMean result / max')
max' = maximum $ map resultMean results