aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-diff.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/builtin-diff.c')
-rw-r--r--tools/perf/builtin-diff.c29
1 files changed, 7 insertions, 22 deletions
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index d869029fb75e..b2e7d39f099b 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -23,7 +23,6 @@ static char const *input_old = "perf.data.old",
23 *input_new = "perf.data"; 23 *input_new = "perf.data";
24static char diff__default_sort_order[] = "dso,symbol"; 24static char diff__default_sort_order[] = "dso,symbol";
25static bool force; 25static bool force;
26static bool show_displacement;
27static bool show_period; 26static bool show_period;
28static bool show_formula; 27static bool show_formula;
29static bool show_baseline_only; 28static bool show_baseline_only;
@@ -296,9 +295,8 @@ static void insert_hist_entry_by_name(struct rb_root *root,
296 rb_insert_color(&he->rb_node, root); 295 rb_insert_color(&he->rb_node, root);
297} 296}
298 297
299static void hists__name_resort(struct hists *self, bool sort) 298static void hists__name_resort(struct hists *self)
300{ 299{
301 unsigned long position = 1;
302 struct rb_root tmp = RB_ROOT; 300 struct rb_root tmp = RB_ROOT;
303 struct rb_node *next = rb_first(&self->entries); 301 struct rb_node *next = rb_first(&self->entries);
304 302
@@ -306,16 +304,12 @@ static void hists__name_resort(struct hists *self, bool sort)
306 struct hist_entry *n = rb_entry(next, struct hist_entry, rb_node); 304 struct hist_entry *n = rb_entry(next, struct hist_entry, rb_node);
307 305
308 next = rb_next(&n->rb_node); 306 next = rb_next(&n->rb_node);
309 n->position = position++;
310 307
311 if (sort) { 308 rb_erase(&n->rb_node, &self->entries);
312 rb_erase(&n->rb_node, &self->entries); 309 insert_hist_entry_by_name(&tmp, n);
313 insert_hist_entry_by_name(&tmp, n);
314 }
315 } 310 }
316 311
317 if (sort) 312 self->entries = tmp;
318 self->entries = tmp;
319} 313}
320 314
321static struct perf_evsel *evsel_match(struct perf_evsel *evsel, 315static struct perf_evsel *evsel_match(struct perf_evsel *evsel,
@@ -339,12 +333,8 @@ static void perf_evlist__resort_hists(struct perf_evlist *evlist, bool name)
339 333
340 hists__output_resort(hists); 334 hists__output_resort(hists);
341 335
342 /* 336 if (name)
343 * The hists__name_resort only sets possition 337 hists__name_resort(hists);
344 * if name is false.
345 */
346 if (name || ((!name) && show_displacement))
347 hists__name_resort(hists, name);
348 } 338 }
349} 339}
350 340
@@ -549,8 +539,6 @@ static const char * const diff_usage[] = {
549static const struct option options[] = { 539static const struct option options[] = {
550 OPT_INCR('v', "verbose", &verbose, 540 OPT_INCR('v', "verbose", &verbose,
551 "be more verbose (show symbol address, etc)"), 541 "be more verbose (show symbol address, etc)"),
552 OPT_BOOLEAN('M', "displacement", &show_displacement,
553 "Show position displacement relative to baseline"),
554 OPT_BOOLEAN('b', "baseline-only", &show_baseline_only, 542 OPT_BOOLEAN('b', "baseline-only", &show_baseline_only,
555 "Show only items with match in baseline"), 543 "Show only items with match in baseline"),
556 OPT_CALLBACK('c', "compute", &compute, 544 OPT_CALLBACK('c', "compute", &compute,
@@ -585,7 +573,7 @@ static const struct option options[] = {
585static void ui_init(void) 573static void ui_init(void)
586{ 574{
587 /* 575 /*
588 * Display baseline/delta/ratio/displacement/ 576 * Display baseline/delta/ratio
589 * formula/periods columns. 577 * formula/periods columns.
590 */ 578 */
591 perf_hpp__column_enable(PERF_HPP__BASELINE); 579 perf_hpp__column_enable(PERF_HPP__BASELINE);
@@ -604,9 +592,6 @@ static void ui_init(void)
604 BUG_ON(1); 592 BUG_ON(1);
605 }; 593 };
606 594
607 if (show_displacement)
608 perf_hpp__column_enable(PERF_HPP__DISPL);
609
610 if (show_formula) 595 if (show_formula)
611 perf_hpp__column_enable(PERF_HPP__FORMULA); 596 perf_hpp__column_enable(PERF_HPP__FORMULA);
612 597