linux/tools/perf
Arnaldo Carvalho de Melo 9c443dfdd3 perf diff: Fix support for all --sort combinations
When we finish creating the hist_entries we _already_ have them
sorted "by name", in fact by what is in --sort, that is exactly
how we can find the pairs in perf_session__match_hists as
'comm', 'dso' & 'symbol' all are strings we need to find the
matches in the baseline session.

So only do the sort by hits followed by a resort by --sort if we
need to find the position for shwowing the --displacement of
hist entries.

Now all these modes work correctly:

Example is a simple 'perf record -f find / > /dev/null' ran
twice then followed by the following commands:

  $ perf diff -f --sort comm
  # Baseline  Delta      Command
  # ........ ..........  .......
  #
       0.00%   +100.00%     find
  $ perf diff -f --sort dso
  # Baseline  Delta           Shared Object
  # ........ ..........  ..................
  #
      59.97%     -0.44%  [kernel]
      21.17%     +0.28%  libc-2.5.so
      18.49%     +0.16%  [ext3]
       0.37%             find
  $ perf diff -f --sort symbol | head -8
  # Baseline  Delta      Symbol
  # ........ ..........  ......
  #
       6.21%     +0.36%  [k] ext3fs_dirhash
       3.43%     +0.41%  [.] __GI_strlen
       3.53%     +0.16%  [k] __kmalloc
       3.17%     +0.49%  [k] system_call
       3.06%     +0.37%  [k] ext3_htree_store_dirent
  $ perf diff -f --sort dso,symbol | head -8
  # Baseline  Delta           Shared Object  Symbol
  # ........ ..........  ..................  ......
  #
       6.21%     +0.36%  [ext3]              [k] ext3fs_dirhash
       3.43%     +0.41%  libc-2.5.so         [.] __GI_strlen
       3.53%     +0.16%  [kernel]            [k] __kmalloc
       3.17%     +0.49%  [kernel]            [k] system_call
       3.06%     +0.37%  [ext3]              [k] ext3_htree_store_dirent
  $

And we don't have to do two expensive resorts in the common, non
--displacement case.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1262047716-23171-5-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-12-30 12:00:00 +01:00
..
bench perf sched: Fix build failure on sparc 2009-12-14 08:59:12 +01:00
Documentation perf diff: Use perf_session__fprintf_hists just like 'perf record' 2009-12-16 16:53:37 +01:00
scripts/perl perf trace/scripting: List available scripts 2009-12-15 10:31:32 +01:00
util perf header: perf_header__push_event() shouldn't die 2009-12-30 11:59:57 +01:00
.gitignore perf tools: Add perf.data to .gitignore 2009-11-24 16:37:01 +01:00
builtin-annotate.c perf session: Remove redundant prefix & suffix from perf_event_ops 2009-12-28 09:03:35 +01:00
builtin-bench.c perf bench: Add "all" pseudo subsystem and "all" pseudo suite 2009-12-14 08:51:19 +01:00
builtin-buildid-list.c perf diff: Fix usage array, it must end with a NULL entry 2009-12-18 20:01:52 +01:00
builtin-diff.c perf diff: Fix support for all --sort combinations 2009-12-30 12:00:00 +01:00
builtin-help.c perf: Use format string of printf to align strings 2009-12-28 09:03:16 +01:00
builtin-kmem.c perf tools: Do a few more directory handling optimizations 2009-12-28 10:18:37 +01:00
builtin-list.c perf list: Fix large list output by using the pager 2009-08-13 09:05:48 +02:00
builtin-probe.c perf probe: Check whether debugfs path is correct 2009-12-17 09:42:43 +01:00
builtin-record.c perf record: We should fork only if a program was specified to run 2009-12-28 09:02:50 +01:00
builtin-report.c perf report: Add --hide-unresolved/-U command line option 2009-12-30 11:59:58 +01:00
builtin-sched.c perf session: Remove redundant prefix & suffix from perf_event_ops 2009-12-28 09:03:35 +01:00
builtin-stat.c perf stat: Do not print ratio when task-clock event is not counted 2009-11-15 15:25:50 +01:00
builtin-timechart.c perf session: Remove redundant prefix & suffix from perf_event_ops 2009-12-28 09:03:35 +01:00
builtin-top.c perf symbols: Move symbol filtering to event__preprocess_sample() 2009-12-16 08:53:49 +01:00
builtin-trace.c perf session: Remove redundant prefix & suffix from perf_event_ops 2009-12-28 09:03:35 +01:00
builtin.h perf diff: Introduce tool to show performance difference 2009-12-15 08:50:29 +01:00
command-list.txt perf diff: Introduce tool to show performance difference 2009-12-15 08:50:29 +01:00
CREDITS perf_counter tools: Add CREDITS file for Git contributors 2009-06-24 19:54:29 +02:00
design.txt perf_event: Add alignment-faults and emulation-faults software events 2009-10-28 16:13:03 +11:00
Makefile perf record: Introduce a symtab cache 2009-12-28 09:03:36 +01:00
perf.c perf tools: Mount debugfs automatically 2009-12-28 10:36:36 +01:00
perf.h perf tools: Allow building for ARM 2009-12-11 13:50:21 +01:00