Group/Order set-operations-* benchmarks better.
authorklebinger.andreas@gmx.at <klebinger.andreas@gmx.at>
Sat, 13 Apr 2019 09:58:08 +0000 (11:58 +0200)
committerDavid Feuer <David.Feuer@gmail.com>
Sun, 14 Apr 2019 01:11:52 +0000 (21:11 -0400)
Benchmarks are now run ordered by method/data_variant/data_size/swapped.

benchmarks/SetOperations/SetOperations.hs

index 7ea224d..989a630 100644 (file)
@@ -4,7 +4,8 @@
 module SetOperations (benchmark) where
 
 import Gauge (bench, defaultMain, whnf)
-import Data.List (partition)
+import Data.List (partition, sortBy)
+import Data.Ord (comparing)
 import Data.Tuple as Tuple
 
 -- | Benchmark a set operation for the given container.
@@ -19,10 +20,13 @@ benchmark fromList swap methods = do
                         whnf (method input1) input2
 
                 | (method_str, method) <- methods
-                , (input_str, data_sizes, (input1, input2)) <- base_inputs ++ swapped_input
+                , (input_str, data_sizes, (input1, input2)) <- sortBenchs (base_inputs ++ swapped_input)
                 ]
 
   where
+    -- Sort benchmark inputs by (data variant, data sizes)
+    sortBenchs = sortBy (comparing (\(name,size,_) -> (name,size)))
+
     -- Data size descriptions, also used in the benchmark names.
     -- They are used to describe how large the input data is, but NOT the data itself.
     -- So for example nn_swap /= nn since the data size for both arguments is the same