fibon-0.1.0: tools/fibon-analyse/Fibon/Analyse/AnalysisRoutines.hs
module Fibon.Analyse.AnalysisRoutines(
noAnalysis
, ghcStatsAnalysis
, Analysis(..)
)
where
import Fibon.Result
import Fibon.Analyse.Result
import Fibon.Analyse.Metrics
import Fibon.Analyse.ExtraStats
data Analysis a = Analysis {
fibonAnalysis :: (FibonResult -> IO FibonStats)-- ^ RunData analyser
, extraParser :: (String -> Maybe a) -- ^ extraStats parser
, extraAnalysis :: ([a] -> IO a) -- ^ extraStats analyser
}
noAnalysis :: Analysis a
noAnalysis = Analysis {
fibonAnalysis = return . getStats
, extraParser = const Nothing
, extraAnalysis = return . head
}
where
getStats fr = FibonStats {
compileTime = Single $ ExecTime ((buildTime . buildData) fr)
, binarySize = Single $ MemSize 0
, wallTime = Single $ ExecTime ((meanTime . summary . runData) fr)
}
ghcStatsAnalysis :: Analysis GhcStats
ghcStatsAnalysis = noAnalysis {
extraParser = parseGhcStats
}
--makeAnalysis :: Analysis a -> (String -> Maybe b) -> Analysis b