Flamegraph generator for python's cProfile stats.
Flamegraphs allow to visualize relations between functions in a very compact and understandable manner.
Flameprof
solves main problems of built-in cProfile reporting and can replace
gprof2dot because later outputs
very huge graphs with a lot of noise.
Flameprof
works with profile stat files obtained by
Profile.dump_stats()
call or via direct script profiling:
python -m cProfile -o myscript.prof myscript.py
Install
Via pip:
pip install flameprof
Or you can invoke flameprof.py
directly:
python flameprof.py input.prof > output.svg
Native svg (--format=svg)
Native svg features:
- compact function names with full names in a tooltip
- precise timings (cumulative and total)
- call counts (in a tooltip on hover)
- green bars show stack frames where flameprof starts to guess timing ratios
- inverted flamegraph to show total time of all calls
Graph width, row height, font size and threshold can be set via appropriate cli options.
flameprof requests.prof > requests.svg
Inverted flamegraph:
(Images are clickable)
Svg generated with flamegraph.pl (--format=log)
Also flameprof
can output trace log suitable as input for flamegraph.pl.
You can treat "samples" as microseconds by default (see --log-mult
option).
flameprof --format=log requests.prof | flamegraph > requests-flamegraph.svg
(Image is clickable)