perf diff: Add diff.compute config option

The diff.compute config variable is to set the default compute method of
perf diff command (-c option).  Possible values 'delta' (default),
'delta-abs', 'ratio' and 'wdiff'.

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-4-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Namhyung Kim 2017-02-10 16:36:13 +09:00 committed by Arnaldo Carvalho de Melo
parent d49dd15d69
commit 4b35994abe
3 changed files with 23 additions and 3 deletions

View File

@ -505,6 +505,11 @@ diff.*::
Setting it to 1 will sort the result by delta (or other Setting it to 1 will sort the result by delta (or other
compute method selected). compute method selected).
diff.compute::
This options sets the method for computing the diff result.
Possible values are 'delta', 'delta-abs', 'ratio' and
'wdiff'. Default is 'delta'.
SEE ALSO SEE ALSO
-------- --------
linkperf:perf[1] linkperf:perf[1]

View File

@ -86,8 +86,9 @@ OPTIONS
-c:: -c::
--compute:: --compute::
Differential computation selection - delta,ratio,wdiff,delta-abs (default is delta). Differential computation selection - delta, ratio, wdiff, delta-abs
See COMPARISON METHODS section for more info. (default is delta). Default can be changed using diff.compute
config option. See COMPARISON METHODS section for more info.
-p:: -p::
--period:: --period::

View File

@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff", [COMPUTE_WEIGHTED_DIFF] = "wdiff",
}; };
static int compute; static int compute = COMPUTE_DELTA;
static int compute_2_hpp[COMPUTE_MAX] = { static int compute_2_hpp[COMPUTE_MAX] = {
[COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA, [COMPUTE_DELTA] = PERF_HPP_DIFF__DELTA,
@ -1299,6 +1299,20 @@ static int diff__config(const char *var, const char *value,
sort_compute = perf_config_int(var, value); sort_compute = perf_config_int(var, value);
return 0; return 0;
} }
if (!strcmp(var, "diff.compute")) {
if (!strcmp(value, "delta")) {
compute = COMPUTE_DELTA;
} else if (!strcmp(value, "delta-abs")) {
compute = COMPUTE_DELTA_ABS;
} else if (!strcmp(value, "ratio")) {
compute = COMPUTE_RATIO;
} else if (!strcmp(value, "wdiff")) {
compute = COMPUTE_WEIGHTED_DIFF;
} else {
pr_err("Invalid compute method: %s\n", value);
return -1;
}
}
return 0; return 0;
} }