From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755872AbcI2T6l (ORCPT ); Thu, 29 Sep 2016 15:58:41 -0400 Received: from mail-pa0-f66.google.com ([209.85.220.66]:36106 "EHLO mail-pa0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755462AbcI2T6f (ORCPT ); Thu, 29 Sep 2016 15:58:35 -0400 From: SeongSoo Cho X-Google-Original-From: SeongSoo Cho To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Ingo Molnar , Peter Zijlstra , SeongSoo Cho , Namhyung Kim , Jiri Olsa , Taeung Song Subject: [PATCH] perf diff: Introduce the new rules of colored printing of delta. Date: Fri, 30 Sep 2016 04:58:26 +0900 Message-Id: <1475179106-24790-1-git-send-email-devpadak@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: SeongSoo Cho As you know, there are the common colored printing of percents so overhead(%) can be c$ But Delta means difference percents from percents of overhead between two files e.g. p$ Although the rule is for overhead(%), Delta value also follow the same rule. So, I think that it would be better to use the new colored rule for the Delta as below. Increament: background colored in red (e.g. +0.50%) Decrement: colored in blue (e.g. -5.50%) Same: default color (e.g. +0.00%) Instead of percent_color_snprintf() function, use new delta_color_snprintf() function. Signed-off-by: SeongSoo Cho Cc: Namhyung Kim Cc: Jiri Olsa Cc: Taeung Song --- tools/perf/builtin-diff.c | 2 +- tools/perf/util/color.c | 21 +++++++++++++++++++++ tools/perf/util/color.h | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index 9ff0db4..228bad1 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c @@ -868,7 +868,7 @@ static int __hpp__color_compare(struct perf_hpp_fmt *fmt, diff = compute_delta(he, pair); scnprintf(pfmt, 20, "%%%+d.2f%%%%", dfmt->header_width - 1); - return percent_color_snprintf(hpp->buf, hpp->size, + return delta_color_snprintf(hpp->buf, hpp->size, pfmt, diff); case COMPUTE_RATIO: if (he->dummy) diff --git a/tools/perf/util/color.c b/tools/perf/util/color.c index dbbf89b..643e932 100644 --- a/tools/perf/util/color.c +++ b/tools/perf/util/color.c @@ -219,3 +219,24 @@ int percent_color_len_snprintf(char *bf, size_t size, const char *fmt, ...) color = get_percent_color(percent); return color_snprintf(bf, size, color, fmt, len, percent); } + +int delta_color_snprintf(char *bf, size_t size, const char *fmt, ...) +{ + va_list args; + double diff, percent; + const char *color = PERF_COLOR_NORMAL; + + va_start(args, fmt); + diff = va_arg(args, double); + va_end(args); + + /* diff command printed second digit after the decimal point. */ + percent = roundf(diff * 100) / 100; + if (percent < 0) + color = PERF_COLOR_BLUE; + else { + if (percent > 0) + color = PERF_COLOR_BG_RED; + } + return color_snprintf(bf, size, color, fmt, diff); +} diff --git a/tools/perf/util/color.h b/tools/perf/util/color.h index a93997f..608edc9 100644 --- a/tools/perf/util/color.h +++ b/tools/perf/util/color.h @@ -40,6 +40,7 @@ int value_color_snprintf(char *bf, size_t size, const char *fmt, double value); int percent_color_snprintf(char *bf, size_t size, const char *fmt, ...); int percent_color_len_snprintf(char *bf, size_t size, const char *fmt, ...); int percent_color_fprintf(FILE *fp, const char *fmt, double percent); +int delta_color_snprintf(char *bf, size_t size, const char *fmt, ...); const char *get_percent_color(double percent); #endif /* __PERF_COLOR_H */ -- 2.7.4