Description
In a "top functions" view, all functions are displayed in a flat list (no tree structure), sorted by "inclusive time", i.e. sorted by the number of samples where this function is present anywhere on the stack.
Example:
Normal:
total self
19 - (root)
19 - RunLoop
10 - ProcessCircles
10 2 ProcessElement
8 8 Circle::Circumference()
9 - ProcessSquares
9 3 ProcessElement
6 6 Square::Circumference()
Inverted:
total self
8 8 Circle::Circumference()
8 - ProcessElement
8 - ProcessCircles
8 - RunLoop
8 - (root)
6 6 Square::Circumference()
6 - ProcessElement
6 - ProcessSquares
6 - RunLoop
6 - (root)
5 5 ProcessElement
5 - ProcessSquares
5 - RunLoop
5 - (root)
5 - ProcessCircles
5 - RunLoop
5 - (root)
Top functions:
total self
19 - (root)
19 - RunLoop
19 5 ProcessElement
10 - ProcessCircles
9 - ProcessSquares
8 8 Circle::Circumference()
6 6 Square::Circumference()
In this example, ProcessElement
is near the top of the list, and easy to find. In the current call tree you have to look for it under two different stacks.
I think we should have such a mode. We could make it a different mode inside the existing Call Tree tab, or we could have a new tab for it.
As a follow up, outside of the scope of this issue, it should would be nice to have the following abilities for each function:
- Restrict the profile to only show samples that contained this function in the stack
- Do the inverse of 1, i.e. remove all samples containing this function in the stack
- Look at the call tree of functions called by the selected function
- Look at the (inverted) call tree of functions that call the selected function
For example, we could split the tab three ways: the list on the left, and two tree views on the right, above each other, with the upper one showing 3 and the lower one showing 4.
┆Issue is synchronized with this Jira Task