@@ -32,6 +32,7 @@ data BenchType
3232 | Base
3333 | FileIO
3434 | Array
35+ | ArrayCmp
3536 | UnpinnedArray
3637 | SmallArray
3738 | PrimArray
@@ -79,6 +80,7 @@ parseBench = do
7980 Just "nested-unfold" -> setBenchType NestedUnfold
8081 Just "base" -> setBenchType Base
8182 Just "fileio" -> setBenchType FileIO
83+ Just "array-cmp" -> setBenchType ArrayCmp
8284 Just "array" -> setBenchType Array
8385 Just "unpinned-array" -> setBenchType UnpinnedArray
8486 Just "small-array" -> setBenchType SmallArray
@@ -255,13 +257,37 @@ makeFileIOGraphs :: Config -> String -> IO ()
255257makeFileIOGraphs cfg@Config{..} inputFile =
256258 ignoringErr $ graph inputFile "fileIO" cfg
257259
260+------------------------------------------------------------------------------
261+-- Generic
262+------------------------------------------------------------------------------
263+
258264makeGraphs :: String -> Config -> String -> IO ()
259265makeGraphs name cfg@Config{..} inputFile =
260266 ignoringErr $ graph inputFile name cfg
261267
262−makeConcurrentGraphs :: Config -> String -> IO ()
263−makeConcurrentGraphs cfg@Config{..} inputFile =
264− ignoringErr $ graph inputFile "concurrent" cfg
268+------------------------------------------------------------------------------
269+-- Arrays
270+------------------------------------------------------------------------------
271+
272+showArrayComparisons Options{..} cfg inp out =
273+ let cfg' = cfg { classifyBenchmark = classifyArray }
274+ in if genGraphs
275+ then ignoringErr $ graph inp "Arrays Comparison"
276+ cfg' { outputDir = Just out
277+ , presentation = Groups Absolute
278+ }
279+ else ignoringErr $ report inp Nothing cfg'
280+
281+ where
282+
283+ classifyArray b
284+ -- SmallArray uses a small number of elements therefore cannot be
285+ -- compared
286+ -- | "SmallArray/" `isPrefixOf` b = ("SmallArray",) <$> stripPrefix "SmallArray/" b
287+ | "Data.Prim.Array/" `isPrefixOf` b = ("Data.Prim.Array",) <$> stripPrefix "Data.Prim.Array/" b
288+ | "Data.Array/" `isPrefixOf` b = ("Data.Array",) <$> stripPrefix "Data.Array/" b
289+ | "array/" `isPrefixOf` b = ("array",) <$> stripPrefix "array/" b
290+ | otherwise = Nothing
265291
266292------------------------------------------------------------------------------
267293-- Reports/Charts for base streams
@@ -396,9 +422,13 @@ main = do
396422 (makeGraphs "prim-array")
397423 "charts/prim-array/results.csv"
398424 "charts/prim-array"
425+ ArrayCmp -> showArrayComparisons opts cfg
426+ { title = Just "Arrays Comparison" }
427+ "charts/array-cmp/results.csv"
428+ "charts/array-cmp"
399429 Concurrent -> benchShow opts cfg
400430 { title = Just "Concurrent Ops" }
401− makeConcurrentGraphs
431+ (makeGraphs "Concurrent")
402432 "charts/concurrent/results.csv"
403433 "charts/concurrent"
404434 Parallel -> benchShow opts cfg