on master help sign in
Add --sort-by-name flag
5537b0bHarendra Kumar
benchmark/Chart.hs+18−6
@@ -25,18 +25,24 @@ data BenchType
25
25
26data Options = Options
26data Options = Options
27 { genGraphs :: Bool
27 { genGraphs :: Bool
28+ , sortByName :: Bool
28 , benchType :: Maybe BenchType
29 , benchType :: Maybe BenchType
29 , fields :: [String]
30 , fields :: [String]
30 } deriving Show
31 } deriving Show
31
32
32defaultOptions :: Options
33defaultOptions :: Options
33−defaultOptions = Options False Nothing ["time"]
34+defaultOptions = Options False False Nothing ["time"]
34
35
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 })
39
40
41+setSortByName :: Monad m => Bool -> StateT (a, Options) m ()
42+setSortByName val = do
43+ (args, opts) <- get
44+ put (args, opts { sortByName = val })
45+
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------------------------------------------------------------------------------
141
148
142selectBench
149selectBench
150+ :: Bool
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 =
146 reverse
154 reverse
147 $ fmap fst
155 $ fmap fst
148 $ either
156 $ either
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)
152
160
161+ where
162+
163+ sortFunc = if sortName then sortOn fst else sortOn snd
164+
153benchShow ::
165benchShow ::
154 Options
166 Options
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
bin/bench.sh+8−2
@@ -12,6 +12,7 @@ print_help () {
12 echo " [--benchmarks <"bench1 bench2 ..." | help>]"
12 echo " [--benchmarks <"bench1 bench2 ..." | help>]"
13 echo " [--prefix <benchmark name prefix to match>"
13 echo " [--prefix <benchmark name prefix to match>"
14 echo " [--fields <"field1 field2 ..." | help>]"
14 echo " [--fields <"field1 field2 ..." | help>]"
15+ echo " [--sort-by-name]"
15 echo " [--graphs]"
16 echo " [--graphs]"
16 echo " [--no-measure]"
17 echo " [--no-measure]"
17 echo " [--append]"
18 echo " [--append]"
@@ -290,8 +291,11 @@ run_reports() {
290 for i in $1
291 for i in $1
291 do
292 do
292 echo "Generating reports for ${i}..."
293 echo "Generating reports for ${i}..."
294+ $prog \
295+ --benchmark $i \
293− $prog $(test "$GRAPH" = 1 && echo "--graphs") \
296+ $(test "$GRAPH" = 1 && echo "--graphs") \
297+ $(test "$SORT_BY_NAME" = 1 && echo "--sort-by-name") \
294− --benchmark $i --fields "$FIELDS"
298+ --fields "$FIELDS"
295 done
299 done
296}
300}
297
301
@@ -316,6 +320,7 @@ CANDIDATE=
316APPEND=0
320APPEND=0
317LONG=0
321LONG=0
318RAW=0
322RAW=0
323+SORT_BY_NAME=0
319GRAPH=0
324GRAPH=0
320MEASURE=1
325MEASURE=1
321
326
@@ -350,6 +355,7 @@ do
350 --raw) RAW=1; shift ;;
355 --raw) RAW=1; shift ;;
351 --append) APPEND=1; shift ;;
356 --append) APPEND=1; shift ;;
352 --long) LONG=1; shift ;;
357 --long) LONG=1; shift ;;
358+ --sort-by-name) SORT_BY_NAME=1; shift ;;
353 --graphs) GRAPH=1; shift ;;
359 --graphs) GRAPH=1; shift ;;
354 --no-measure) MEASURE=0; shift ;;
360 --no-measure) MEASURE=0; shift ;;
355 --dev-build) RUNNING_DEVBUILD=1; shift ;;
361 --dev-build) RUNNING_DEVBUILD=1; shift ;;