Nose comes with a handy option to generate profiling stats.
To profile your code, create a test dedicated to this purpose and run
it with the right options:
$ nosetests --with-profile --profile-stats-file stats.pf test_performance
This will run the tests that corresponds to the test_performance name and generate a stats.pf file.
From there, there is plenty of tools that can transform such a file into a visual graph. Most of the time, they use Graphviz to render a graph, by generating a file dot can read. This software is most of the time easy to install through a binary distribution on your system. If you need to compile it... good luck.. ;)
Anyway, from there, I use gprof2dot, which renders a nice graph with meaningful colors.
From the author:
The color of the nodes and edges varies according to the total time % value. In the default temperature-like color-map, functions where most time is spent (hot-spots) are marked as saturated red, and functions where little time is spent are marked as dark blue.
If you want to use it, I have created some console scripts for
conveniency, you can install using [easy_install]:
$ easy_install pbp.scripts
It creates a gprof2dot script you can use, following the author
documentation, but also a hotshot2dot script that will convert
automatically a statistics file and pass it to gprof2dot:
$ hotshot2dot /path/to/my/hotshot/file
This will print in the output a dot file, you can send to the dot program, using a pipe:
$ hotshot2dot /path/to/my/hotshot/file | dot -Tpng -o output.png
You will get the visual result in output.png.