On Wed, Feb 22, 2017 at 7:08 PM, Taeung Song <treeze.tae...@gmail.com> wrote: > In the stdio interface, currently 'filename:linenr' infos > are confusedly printed in the intervals of assembly code. > So fix it. > > The cause was a 0.5% filter of if statement. After fixed, > additionally summary of overhead per srcline is more correct.
This patch does two things and fails to explain why. Thanks, Namhyung > > Before: > > # perf annotate --stdio -l > > Sorted summary for file /home/taeung/workspace/perf-test/test > ---------------------------------------------- > > 36.57 test.c:38 > 28.72 test.c:37 > > ... > > Percent | Source code & Disassembly of test ... > > ... > > 0.21 : 400816: push %rbp > test.c:26 1.86 : 400817: mov %rsp,%rbp > 0.21 : 40081a: mov %edi,-0x24(%rbp) > 0.21 : 40081d: mov %rsi,-0x30(%rbp) > > After: > > # perf annotate --stdio -l > > Sorted summary for file /home/taeung/workspace/perf-test/test > ---------------------------------------------- > > 37.40 test.c:38 > 29.34 test.c:37 > > ... > > Percent | Source code & Disassembly of test ... > > ... > > test.c:26 > 0.21 : 400816: push %rbp > 1.86 : 400817: mov %rsp,%rbp > 0.21 : 40081a: mov %edi,-0x24(%rbp) > 0.21 : 40081d: mov %rsi,-0x30(%rbp) > > Cc: Namhyung Kim <namhy...@kernel.org> > Cc: Jiri Olsa <jo...@redhat.com> > Signed-off-by: Taeung Song <treeze.tae...@gmail.com> > --- > tools/perf/util/annotate.c | 17 ++--------------- > 1 file changed, 2 insertions(+), 15 deletions(-) > > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c > index bc54e41..9d0aa50 100644 > --- a/tools/perf/util/annotate.c > +++ b/tools/perf/util/annotate.c > @@ -1002,7 +1002,6 @@ static int disasm_line__print(struct disasm_line *dl, > struct symbol *sym, u64 st > int max_lines, struct disasm_line *queue) > { > static const char *prev_line; > - static const char *prev_color; > > if (dl->offset != -1) { > const char *path = NULL; > @@ -1059,17 +1058,10 @@ static int disasm_line__print(struct disasm_line *dl, > struct symbol *sym, u64 st > > color = get_percent_color(max_percent); > > - /* > - * Also color the filename and line if needed, with > - * the same color than the percentage. Don't print it > - * twice for close colored addr with the same filename:line > - */ > if (path) { > - if (!prev_line || strcmp(prev_line, path) > - || color != prev_color) { > - color_fprintf(stdout, color, " %s", path); > + if (!prev_line || strcmp(prev_line, path)) { > + fprintf(stdout, " %s\n", path); > prev_line = path; > - prev_color = color; > } > } > > @@ -1650,14 +1642,9 @@ static int symbol__get_source_line(struct symbol *sym, > struct map *map, > percent_max = src_line->samples[k].percent; > } > > - if (percent_max <= 0.5) > - goto next; > - > offset = start + i; > src_line->path = get_srcline(map->dso, offset, NULL, false); > insert_source_line(&tmp_root, src_line); > - > - next: > src_line = (void *)src_line + sizeof_src_line; > } > > -- > 2.7.4 > -- Thanks, Namhyung