TITLE OF PAPER: Python Profiling and Visualization URL OF PRESENTATION: _URL_of_powerpoint_presentation_ PRESENTED BY: Richard Saunders REPRESENTING: Rincon Research Corporation CONFERENCE: PyCon 2005 DATE: Thursday, March 24, 2005 LOCATION: GWU Cafritz Conference Center, Grand Ballroom -------------------------------------------------------------------------- REAL-TIME NOTES / ANNOTATIONS OF THE PAPER: {If you've contributed, add your name, e-mail & URL at the bottom} Background rincon does DSP, ffts, fliters, demods, etc. See "An empirical comparison of C, C++, Perl, Python, Rexx, and Tcl", IEEE Computer There are profiling hooks built into Python; you can arrange for them to call any function you like. There's a 'profile' module. tried - profile - hotspot both deterministic Approach - Needs steady state debuggable applications - Site tunable: want to toggle profile while running: dynamic prof - minimal intrusion: cheap for prod code 2-prong approach: Wrote something like "top" for Python This uses a custom instruction available only on x86 that is a cycle counter to timestamp the function calls. Top runs on a separate CPU (so it doens't throw things off) and communicates with the Python interpreter via shared mem. Existing Visualization tools Python top Found they should optimise writestr Reports time in function vs. time in called functions Uses multi-CPU environments to offload the profiling computations from target program 9: ULMA: a monitoring framework hooks desecribe user code perf, but not pyvm perf Hooks into PyDict_Type dictionary, replacing tartget routine pointer with monitor path code pointer No overhead for non-monitored methods VM code not touched Unicon representation: hexigon file represents growth of the stack Nova representation: Spin clocks represent time spent in task Color represents the type of data being manipulated, ex: list, dict, ... Length of clock hand indicates size of object at construction. Example of using Algae and other tools to optimise a little program Found that Tkinter was making a lot of dictionaries (all slides are in references, in the pdf) q&a: - memory prof? yes, alamo can do it - web prof? uh, yes. it's an app, right? of course you can profile it. - i/o prof? not explicitly, but should be obvious, for example, doing lots of 'write' blocking - top portable? yep. -------------------------------------------------------------------------- REFERENCES: {as documents / sites are referenced add them below} "An empirical comparison of C, C++, Perl.. ": http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprtTR.pdf talk slides: http://www.python.org/pycon/2005/papers/49/PyCon2005ProfilingandVisualizing.pdf http://unicon.sourceforge.net/ -------------------------------------------------------------------------- QUOTES: -------------------------------------------------------------------------- CONTRIBUTORS: {add your name, e-mail address and URL below} Nick Bastin Bob Kuehne Andy Wright Erik Rose -------------------------------------------------------------------------- E-MAIL BOUNCEBACK: {add your e-mail address separated by commas } -------------------------------------------------------------------------- NOTES ON / KEY TO THIS TEMPLATE: A headline (like a field in a database) will be CAPITALISED This differentiates from the text that follows A variable that you can change will be surrounded by _underscores_ Spaces in variables are also replaced with under_scores This allows people to select the whole variable with a simple double-click A tool-tip is lower case and surrounded by {curly brackets / parentheses} These supply helpful contextual information. -------------------------------------------------------------------------- Copyright shared between all the participants unless otherwise stated...