bff-0.1: StatsRender.hs
{-# LANGUAGE ExistentialQuantification, PolymorphicComponents,
TemplateHaskell
#-}
import Graphics.Rendering.Chart
import System.IO
import Data.List
import StatsDef
putGraph name statData filename = renderableToPDFFile r 600 400 filename
where r = toRenderable $
defaultLayout1
{ layout1_title = "Measurements \"" ++ name ++"\""
, layout1_plots = [
("manual (put)", HA_Bottom, VA_Left,
toPlot $ defaultPlotLines
{ plot_lines_values = [manualData]
, plot_lines_style = dashedLine 1 [4,4] (Color 0 0 0)
}
),
("automatic (bff get)", HA_Bottom, VA_Left,
toPlot $ defaultPlotLines
{ plot_lines_values = [automaticData]
, plot_lines_style = solidLine 1 (Color 0 0 0)
}
)
]
, layout1_vertical_axes =
linkedAxes' (autoScaledAxis (defaultAxis {axis_title =
"Average time per run in ms"
}))
, layout1_horizontal_axes =
linkedAxes' (autoScaledAxis (defaultAxis {axis_title =
"Size of original source"
}))
}
(manualData, automaticData) = unzip $ map f statData
f (s, m, a) = (Point (fromIntegral s) m, Point (fromIntegral s) a)
printTest :: String -> StatRunData -> IO ()
printTest name statData = do
putStr $ "Measurements \"" ++ name ++ "\" "
let graphFileName = name ++ ".pdf"
putStrLn $ "Writing graph to " ++ graphFileName
putGraph name statData graphFileName
main = do cont <- readFile "stats.data"
mapM_ (uncurry printTest) (read cont)