@@ -51,13 +51,14 @@ groupRows = M.map (sortBy (compare `on` rowName)) . foldr f M.empty
5151
5252main = do
5353 args <- getArgs
54− forM_ args $ \arg -> do
55− d <- groupRows `fmap` readCSV arg
56− forM_ (M.toList d) $ \(tdesc,rows) -> do
57− let desc = T.unpack tdesc
58− --renderableToWindow (renderMark desc rows) 400 160
59− renderableToPNGFile (renderMark desc rows) 400 160
60− (printf "time-%s.png" (map clean desc))
54+ groups <- mapM (fmap groupRows . readCSV) args
55+ let dd = M.unionsWith (++) . map (M.map (:[])) $ groups
56+ forM_ (M.toList dd) $ \(tdesc,rows) -> do
57+ let desc = T.unpack tdesc
58+ if False
59+ then renderableToWindow (renderMark desc rows) 400 160
60+ else renderableToPNGFile (renderMark desc rows) 400 160
61+ (printf "time-%s.png" (map clean desc))
6162 where clean '/' = '-'
6263 clean c | isSpace c = '-'
6364 | otherwise = c
@@ -66,13 +67,14 @@ instance BarsPlotValue LogValue where
6667 barsReference = LogValue 1e-300
6768 barsAdd (LogValue a) (LogValue b) = LogValue (a * b)
6869
69−renderMark :: String -> [Row] -> Renderable ()
70+renderMark :: String -> [[Row]] -> Renderable ()
7071renderMark desc rows
71− | minimum values * 50 >= maximum values = toRenderable linLayout
72− | otherwise = toRenderable logLayout
72+ | useLog = toRenderable linLayout
73+ | otherwise = toRenderable logLayout
7374 where
74− values = map rowMean rows
75− keys = map git rows
75+ useLog = minimum (map minimum values) >= maximum (map maximum values) / 25
76+ values = transpose . map (map rowMean) $ rows
77+ keys = map git (head rows)
7678 where git r = let n = T.unpack . rowName $ r
7779 in maybe n id . flip lookup mappings $ n
7880 mappings = [("bl", "lazy BS"), ("bs", "strict BS"), ("l", "list"),
@@ -101,10 +103,10 @@ renderMark desc rows
101103 bottomAxis = laxis_generate ^= autoScaledAxis typeAxis
102104 $ defaultLayoutAxis
103105
104− linBars = plot_bars_values ^= (zip [0.5,1.5..] . map (:[]) $ values)
106+ linBars = plot_bars_values ^= (zip [0.5,1.5..] values)
105107 $ defaultPlotBars
106108
107− logBars = plot_bars_values ^= (zip [0.5,1.5..] . map ((:[]) . LogValue) $ values)
109+ logBars = plot_bars_values ^= (zip [0.5,1.5..] . map (map LogValue) $ values)
108110 $ defaultPlotBars
109111
110112 typeAxis = la_labelf ^= (ix keys . floor)