Re: [PATCH 13/23] perf hists: Support filtering in hierarchy mode

From: Namhyung Kim
Date: Wed Feb 10 2016 - 09:17:32 EST


On Wed, Feb 10, 2016 at 01:11:19PM +0100, Jiri Olsa wrote:
> On Fri, Feb 05, 2016 at 10:01:45PM +0900, Namhyung Kim wrote:
>
> SNIP
>
> > + /* force to go to sibling in the hierarchy */
> > + saved_unfolded = h->unfolded;
> > + h->unfolded = false;
> > +
> > + nd = rb_hierarchy_next(&h->rb_node);
> > + h->unfolded = saved_unfolded;
> > + }
> > + }
> > +
> > + /* resort output (top-level entries only) */
> > + nd = rb_first(&hists->entries);
> > + while (nd) {
> > + struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
> > +
> > + nd = rb_next(nd);
> > + rb_erase(&h->rb_node, &hists->entries);
> > +
> > + __hists__insert_output_entry(&tmp, h, 0, false);
> > + }
>
> what's the purpose of this resort? the only affect I see
> is to recalculate callchains

Filter can change parent entries' period so we need to resort after
applying a filter and this is why I pass 'false' for the
'use_callchain' param.

For example, let's say there're two top-level entries: A and B. The A
has 40% overhead and the B has 30%. But after applying filter the A
can have 10% and the B can have 15%. So output should be changed to
put the B before the A.

I'll add a comment for this.

Thanks,
Namhyung