• Namhyung Kim's avatar
    perf diff: Fix -o/--order option behavior · 566b5cfb
    Namhyung Kim authored
    The prior change fixes default output ordering with each column but it
    breaks -o/--order option.  This patch prepends a new hpp fmt struct to
    sort list but not to output field list so that it can affect ordering
    without adding a new output column.
    
    The new hpp fmt uses its own compare functions which treats dummy
    entries (which have no baseline) little differently - the delta field
    can be computed without baseline but others (ratio and wdiff) are not.
    
    The new output will look like below:
    
      $ perf diff -o 2 perf.data.{old,cur,new}
      ...
      # Baseline/0  Delta/1  Delta/2  Shared Object      Symbol
      # ..........  .......  .......  .................  ..........................................
            22.98%   +0.51%   +0.52%  libc-2.20.so       [.] _int_malloc
             5.70%   +0.28%   +0.30%  libc-2.20.so       [.] free
             4.38%   -0.21%   +0.25%  a.out              [.] main
             1.32%   -0.15%   +0.05%  a.out              [.] free@plt
                              +0.01%  [kernel.kallsyms]  [k] intel_pstate_timer_func
                              +0.01%  [kernel.kallsyms]  [k] _raw_spin_lock_irqsave
                              +0.01%  [kernel.kallsyms]  [k] timekeeping_update.constprop.8
                     +0.01%   +0.01%  [kernel.kallsyms]  [k] apic_timer_interrupt
             0.01%            -0.00%  [kernel.kallsyms]  [k] native_read_msr_safe
             0.01%   -0.01%   -0.01%  [kernel.kallsyms]  [k] native_write_msr_safe
             1.31%   +0.03%   -0.06%  a.out              [.] malloc@plt
            31.50%   -0.74%   -0.23%  libc-2.20.so       [.] _int_free
            32.75%   +0.28%   -0.83%  libc-2.20.so       [.] malloc
             0.01%                    [kernel.kallsyms]  [k] scheduler_tick
                     +0.01%           [kernel.kallsyms]  [k] read_tsc
                     +0.01%           [kernel.kallsyms]  [k] perf_adjust_freq_unthr_context.part.82
    
    In above example, the output was sorted by 'Delta/2' column first, and
    then 'Baseline/0' and finally 'Delta/1'.
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1420677949-6719-8-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    566b5cfb
builtin-diff.c 28.9 KB