Skip to content

Flamegraph generator for cProfile stats

License

Notifications You must be signed in to change notification settings

pgraciae/flameprof

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Requests profile

Inverted flamegraph:

Requests profile

(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

Requests profile with flamegraph.pl

(Image is clickable)

About

Flamegraph generator for cProfile stats

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 91.5%
  • Shell 8.5%