perf diff: Add diff.order config option
authorNamhyung Kim <namhyung@kernel.org>
Fri, 10 Feb 2017 07:36:12 +0000 (16:36 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 13 Feb 2017 17:29:37 +0000 (14:29 -0300)
In many cases, I need to look at differences between two data so I often
used the -o option to sort the result base on the difference first.
It'd be nice to have a config option to set it by default.

The diff.order config option is to set the default value of -o/--order
option.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Taeung Song <treeze.taeung@gmail.com>
Link: http://lkml.kernel.org/r/20170210073614.24584-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/perf-config.txt
tools/perf/Documentation/perf-diff.txt
tools/perf/builtin-diff.c

index 9365b75..49ab79d 100644 (file)
@@ -498,6 +498,13 @@ record.*::
                But if this option is 'no-cache', it will not update the build-id cache.
                'skip' skips post-processing and does not update the cache.
 
+diff.*::
+       diff.order::
+               This option sets the number of columns to sort the result.
+               The default is 0, which means sorting by baseline.
+               Setting it to 1 will sort the result by delta (or other
+               compute method selected).
+
 SEE ALSO
 --------
 linkperf:perf[1]
index af80284..7c014c9 100644 (file)
@@ -99,7 +99,11 @@ OPTIONS
 
 -o::
 --order::
-       Specify compute sorting column number.
+       Specify compute sorting column number.  0 means sorting by baseline
+       overhead (default) and 1 means sorting by computed value of column 1
+       (data from the first file other base baseline).  Values more than 1
+       can be used only if enough data files are provided.
+       The default value can be set using the diff.order config option.
 
 --percentage::
        Determine how to display the overhead percentage of filtered entries.
index 781c9e6..181ff99 100644 (file)
@@ -17,6 +17,7 @@
 #include "util/symbol.h"
 #include "util/util.h"
 #include "util/data.h"
+#include "util/config.h"
 
 #include <stdlib.h>
 #include <math.h>
@@ -1291,6 +1292,17 @@ static int data_init(int argc, const char **argv)
        return 0;
 }
 
+static int diff__config(const char *var, const char *value,
+                       void *cb __maybe_unused)
+{
+       if (!strcmp(var, "diff.order")) {
+               sort_compute = perf_config_int(var, value);
+               return 0;
+       }
+
+       return 0;
+}
+
 int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
 {
        int ret = hists__init();
@@ -1298,6 +1310,8 @@ int cmd_diff(int argc, const char **argv, const char *prefix __maybe_unused)
        if (ret < 0)
                return ret;
 
+       perf_config(diff__config, NULL);
+
        argc = parse_options(argc, argv, options, diff_usage, 0);
 
        if (symbol__init(NULL) < 0)