@@ -32,6 +32,7 @@ data BenchType
35 | UnpinnedArray
36 | UnpinnedArray
36 | SmallArray
37 | SmallArray
37 | PrimArray
38 | PrimArray
@@ -79,6 +80,7 @@ parseBench = do
79 Just "nested-unfold" -> setBenchType NestedUnfold
80 Just "nested-unfold" -> setBenchType NestedUnfold
80 Just "base" -> setBenchType Base
81 Just "base" -> setBenchType Base
81 Just "fileio" -> setBenchType FileIO
82 Just "fileio" -> setBenchType FileIO
83+ Just "array-cmp" -> setBenchType ArrayCmp
82 Just "array" -> setBenchType Array
84 Just "array" -> setBenchType Array
83 Just "unpinned-array" -> setBenchType UnpinnedArray
85 Just "unpinned-array" -> setBenchType UnpinnedArray
84 Just "small-array" -> setBenchType SmallArray
86 Just "small-array" -> setBenchType SmallArray
@@ -255,13 +257,37 @@ makeFileIOGraphs :: Config -> String -> IO ()
255makeFileIOGraphs cfg@Config{..} inputFile =
257makeFileIOGraphs cfg@Config{..} inputFile =
256 ignoringErr $ graph inputFile "fileIO" cfg
258 ignoringErr $ graph inputFile "fileIO" cfg
260+------------------------------------------------------------------------------
262+------------------------------------------------------------------------------
258makeGraphs :: String -> Config -> String -> IO ()
264makeGraphs :: String -> Config -> String -> IO ()
259makeGraphs name cfg@Config{..} inputFile =
265makeGraphs name cfg@Config{..} inputFile =
260 ignoringErr $ graph inputFile name cfg
266 ignoringErr $ graph inputFile name cfg
262−makeConcurrentGraphs :: Config -> String -> IO ()
268+------------------------------------------------------------------------------
263−makeConcurrentGraphs cfg@Config{..} inputFile =
269+-- Arrays
270+------------------------------------------------------------------------------
272+showArrayComparisons Options{..} cfg inp out =
273+ let cfg' = cfg { classifyBenchmark = classifyArray }
264− ignoringErr $ graph inputFile "concurrent" cfg
275+ then ignoringErr $ graph inp "Arrays Comparison"
276+ cfg' { outputDir = Just out
277+ , presentation = Groups Absolute
279+ else ignoringErr $ report inp Nothing cfg'
284+ -- SmallArray uses a small number of elements therefore cannot be
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
266------------------------------------------------------------------------------
292------------------------------------------------------------------------------
267-- Reports/Charts for base streams
293-- Reports/Charts for base streams
@@ -396,9 +422,13 @@ main = do
396 (makeGraphs "prim-array")
422 (makeGraphs "prim-array")
397 "charts/prim-array/results.csv"
423 "charts/prim-array/results.csv"
398 "charts/prim-array"
424 "charts/prim-array"
425+ ArrayCmp -> showArrayComparisons opts cfg
426+ { title = Just "Arrays Comparison" }
427+ "charts/array-cmp/results.csv"
399 Concurrent -> benchShow opts cfg
429 Concurrent -> benchShow opts cfg
400 { title = Just "Concurrent Ops" }
430 { title = Just "Concurrent Ops" }
401− makeConcurrentGraphs
431+ (makeGraphs "Concurrent")
402 "charts/concurrent/results.csv"
432 "charts/concurrent/results.csv"
403 "charts/concurrent"
433 "charts/concurrent"
404 Parallel -> benchShow opts cfg
434 Parallel -> benchShow opts cfg