@@ -25,18 +25,24 @@ data BenchType
26data Options = Options
26data Options = Options
27 { genGraphs :: Bool
27 { genGraphs :: Bool
28 , benchType :: Maybe BenchType
29 , benchType :: Maybe BenchType
29 , fields :: [String]
30 , fields :: [String]
30 } deriving Show
31 } deriving Show
32defaultOptions :: Options
33defaultOptions :: Options
33−defaultOptions = Options False Nothing ["time"]
34+defaultOptions = Options False False Nothing ["time"]
35setGenGraphs :: Monad m => Bool -> StateT (a, Options) m ()
36setGenGraphs :: Monad m => Bool -> StateT (a, Options) m ()
36setGenGraphs val = do
37setGenGraphs val = do
37 (args, opts) <- get
38 (args, opts) <- get
38 put (args, opts { genGraphs = val })
39 put (args, opts { genGraphs = val })
41+setSortByName :: Monad m => Bool -> StateT (a, Options) m ()
42+setSortByName val = do
44+ put (args, opts { sortByName = val })
40setBenchType :: Monad m => BenchType -> StateT (a, Options) m ()
46setBenchType :: Monad m => BenchType -> StateT (a, Options) m ()
41setBenchType val = do
47setBenchType val = do
42 (args, opts) <- get
48 (args, opts) <- get
@@ -88,6 +94,7 @@ parseOptions = do
88 parseOpt opt =
94 parseOpt opt =
89 case opt of
95 case opt of
90 "--graphs" -> setGenGraphs True
96 "--graphs" -> setGenGraphs True
97+ "--sort-by-name" -> setSortByName True
91 "--benchmark" -> parseBench
98 "--benchmark" -> parseBench
92 "--fields" -> parseFields
99 "--fields" -> parseFields
93 str -> do
100 str -> do
@@ -140,16 +147,21 @@ showComparisons Options{..} cfg inp out =
140------------------------------------------------------------------------------
147------------------------------------------------------------------------------
142selectBench
149selectBench
143− :: (SortColumn -> Maybe GroupStyle -> Either String [(String, Double)])
151+ -> (SortColumn -> Maybe GroupStyle -> Either String [(String, Double)])
144 -> [String]
152 -> [String]
145−selectBench f =
153+selectBench sortName f =
147 $ fmap fst
155 $ fmap fst
149− (const $ either error (sortOn snd) $ f (ColumnIndex 0) (Just PercentDiff))
157+ (const $ either error sortFunc $ f (ColumnIndex 0) (Just PercentDiff))
150− (sortOn snd)
158+ sortFunc
151 $ f (ColumnIndex 1) (Just PercentDiff)
159 $ f (ColumnIndex 1) (Just PercentDiff)
163+ sortFunc = if sortName then sortOn fst else sortOn snd
153benchShow ::
165benchShow ::
155 -> Config
167 -> Config
@@ -172,7 +184,7 @@ main = do
172 Just opts@Options{fields = fs, benchType = btype} ->
184 Just opts@Options{fields = fs, benchType = btype} ->
173 let cfg = defaultConfig
185 let cfg = defaultConfig
174 { presentation = Groups PercentDiff
186 { presentation = Groups PercentDiff
175− , selectBenchmarks = selectBench
187+ , selectBenchmarks = selectBench (sortByName opts)
176 , selectFields = filter
188 , selectFields = filter
177 ( flip elem fs
189 ( flip elem fs
178 . fmap toLower
190 . fmap toLower