Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/baverman/flameprof

Flamegraph generator for cProfile stats
https://github.com/baverman/flameprof

Last synced: about 1 month ago
JSON representation

Flamegraph generator for cProfile stats

Awesome Lists containing this project

README

        

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

.. image:: https://cdn.rawgit.com/baverman/flameprof/master/img/requests.svg
:alt: Requests profile
:width: 100%
:align: center

Inverted flamegraph:

.. image:: https://cdn.rawgit.com/baverman/flameprof/master/img/httplib.svg
:alt: Requests profile
:width: 100%
:align: center

(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:: https://cdn.rawgit.com/baverman/flameprof/master/img/requests-flamegraph.svg
:alt: Requests profile with flamegraph.pl
:width: 100%
:align: center

(Image is clickable)