diff options
| author | Ramkumar Ramachandra <artagnon@gmail.com> | 2013-12-30 02:34:19 -0500 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-01-13 09:36:46 -0500 |
| commit | 01f10bc85f538cd681d0a3338b97a33f308d944b (patch) | |
| tree | c21da91aae7f0b9c91a12bfdab4a2c6c4f4e79ec /tools/perf/builtin-diff.c | |
| parent | f77c6e9c8f9c444cd44423df0c2708e86a06a696 (diff) | |
perf diff: Color the Delta column
Color the numbers in the Delta column using percent_color_snprintf().
Generalize the coloring function so that we can accommodate all three
comparison methods in future patches: delta, ratio, and wdiff.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1388388861-7931-3-git-send-email-artagnon@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-diff.c')
| -rw-r--r-- | tools/perf/builtin-diff.c | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c index 987cac3b4bba..6c3f220115ac 100644 --- a/tools/perf/builtin-diff.c +++ b/tools/perf/builtin-diff.c | |||
| @@ -770,6 +770,45 @@ static int hpp__entry_baseline(struct hist_entry *he, char *buf, size_t size) | |||
| 770 | return ret; | 770 | return ret; |
| 771 | } | 771 | } |
| 772 | 772 | ||
| 773 | static int __hpp__color_compare(struct perf_hpp_fmt *fmt, | ||
| 774 | struct perf_hpp *hpp, struct hist_entry *he, | ||
| 775 | int comparison_method) | ||
| 776 | { | ||
| 777 | struct diff_hpp_fmt *dfmt = | ||
| 778 | container_of(fmt, struct diff_hpp_fmt, fmt); | ||
| 779 | struct hist_entry *pair = get_pair_fmt(he, dfmt); | ||
| 780 | double diff; | ||
| 781 | char pfmt[20] = " "; | ||
| 782 | |||
| 783 | if (!pair) | ||
| 784 | goto dummy_print; | ||
| 785 | |||
| 786 | switch (comparison_method) { | ||
| 787 | case COMPUTE_DELTA: | ||
| 788 | if (pair->diff.computed) | ||
| 789 | diff = pair->diff.period_ratio_delta; | ||
| 790 | else | ||
| 791 | diff = compute_delta(he, pair); | ||
| 792 | |||
| 793 | if (fabs(diff) < 0.01) | ||
| 794 | goto dummy_print; | ||
| 795 | scnprintf(pfmt, 20, "%%%+d.2f%%%%", dfmt->header_width - 1); | ||
| 796 | return percent_color_snprintf(hpp->buf, hpp->size, | ||
| 797 | pfmt, diff); | ||
| 798 | default: | ||
| 799 | BUG_ON(1); | ||
| 800 | } | ||
| 801 | dummy_print: | ||
| 802 | return scnprintf(hpp->buf, hpp->size, "%*s", | ||
| 803 | dfmt->header_width, pfmt); | ||
| 804 | } | ||
| 805 | |||
| 806 | static int hpp__color_delta(struct perf_hpp_fmt *fmt, | ||
| 807 | struct perf_hpp *hpp, struct hist_entry *he) | ||
| 808 | { | ||
| 809 | return __hpp__color_compare(fmt, hpp, he, COMPUTE_DELTA); | ||
| 810 | } | ||
| 811 | |||
| 773 | static void | 812 | static void |
| 774 | hpp__entry_unpair(struct hist_entry *he, int idx, char *buf, size_t size) | 813 | hpp__entry_unpair(struct hist_entry *he, int idx, char *buf, size_t size) |
| 775 | { | 814 | { |
| @@ -941,8 +980,16 @@ static void data__hpp_register(struct data__file *d, int idx) | |||
| 941 | fmt->entry = hpp__entry_global; | 980 | fmt->entry = hpp__entry_global; |
| 942 | 981 | ||
| 943 | /* TODO more colors */ | 982 | /* TODO more colors */ |
| 944 | if (idx == PERF_HPP_DIFF__BASELINE) | 983 | switch (idx) { |
| 984 | case PERF_HPP_DIFF__BASELINE: | ||
| 945 | fmt->color = hpp__color_baseline; | 985 | fmt->color = hpp__color_baseline; |
| 986 | break; | ||
| 987 | case PERF_HPP_DIFF__DELTA: | ||
| 988 | fmt->color = hpp__color_delta; | ||
| 989 | break; | ||
| 990 | default: | ||
| 991 | break; | ||
| 992 | } | ||
| 946 | 993 | ||
| 947 | init_header(d, dfmt); | 994 | init_header(d, dfmt); |
| 948 | perf_hpp__column_register(fmt); | 995 | perf_hpp__column_register(fmt); |
