Hacker News new | ask | show | jobs
by _verandaguy 2848 days ago
If you're talking about the flame graphs, they're a fairly common feature of modern profilers. The oldest implementation I know of is at https://github.com/brendangregg/FlameGraph.
2 comments

This is the same script. The Rust code is just invoking Perl to generate it.
I've never understood why flame graphs are better than the normal presentation of inclusive and exclusive timings in performance tools, even if they're not "modern", but embody some decades' experience. Anyone care to explain?
Flame graphs have extra information in the form of seeing the caller and callees. That, and I find the graphical presentation to be easier to scan.
Of course I expect to see the call tree, and to flip between that and a flat view, to flip between different metrics in the views, and to see them across processes/threads. I'm talking about graphical tools (perhaps coupled with external reduction of the data) like CUBE [1], Paraprof [2], and those in toolsets like Open|Speedshop [3] and HPCToolkit [4] with which I'm less familiar.

1. http://www.scalasca.org/software/cube-4.x/documentation.html

2. https://www.cs.uoregon.edu/research/tau/docs/newguide/bk01pt...

3. https://openspeedshop.org

4. https://hpctoolkit.org

I'm far from a performance expert, but my impression is:

It shows the call paths to the functions and what part each path took, that's not so obvious from the typical table. On the other hand, finding functions that are called quite a lot all over the place and add up is easier in the table, so it's not become useless.

The latter can be accomplished with inverted flame graphs (sometimes called icicle graphs) which show the call stack inverted
Indeed, you want alternative views depending on what sort of profile or question about it you have -- with toggles in the GUI.