[PATCH 3/3] perf diff: Add diff.compute config option

From: Namhyung Kim
Date: Mon Feb 06 2017 - 02:23:45 EST


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'.

Cc: Taeung Song <treeze.taeung@xxxxxxxxx>
Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
---
tools/perf/Documentation/perf-config.txt | 5 +++++
tools/perf/Documentation/perf-diff.txt | 5 +++--
tools/perf/builtin-diff.c | 16 +++++++++++++++-
3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 5b54d47ef713..f2d758dc1edc 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -505,6 +505,11 @@ Variables
Setting it to 1 will sort the result by delta (or other
compute method selected).

+ diff.compute::
+ This options sets the method of computing diff result.
+ Possible values are 'delta', 'delta-abs', 'ratio' and
+ 'wdiff'. Default is 'delta'.
+
SEE ALSO
--------
linkperf:perf[1]
diff --git a/tools/perf/Documentation/perf-diff.txt b/tools/perf/Documentation/perf-diff.txt
index 6ba3bf582d79..70f490408262 100644
--- a/tools/perf/Documentation/perf-diff.txt
+++ b/tools/perf/Documentation/perf-diff.txt
@@ -86,8 +86,9 @@ OPTIONS

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

-p::
--period::
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 181ff996e039..4b4004d41c6a 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -86,7 +86,7 @@ const char *compute_names[COMPUTE_MAX] = {
[COMPUTE_WEIGHTED_DIFF] = "wdiff",
};

-static int compute;
+static int compute = COMPUTE_DELTA;

static int compute_2_hpp[COMPUTE_MAX] = {
[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);
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;
}
--
2.11.0