Development Team/Performance: Difference between revisions
Appearance
New page: Just a quick dump of the snippets I use for profiling: First use a system-wide profiler like sysprof Next, profile python code, open the output with kcachegrind: import os import cPro... |
m moved Walter is a wanker 12/Performance to Development Team/Performance over redirect: revert |
||
| (6 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
<noinclude>{{ GoogleTrans-en | es =show | bg =show | zh-CN =show | zh-TW =show | hr =show | cs =show | da =show | nl =show | fi =show | fr =show | de =show | el =show | hi =show | it =show | ja =show | ko =show | no =show | pl =show | pt =show | ro =show | ru =show | sv =show }}</noinclude> | |||
Just a quick dump of the snippets I use for profiling: | Just a quick dump of the snippets I use for profiling: | ||
| Line 30: | Line 31: | ||
for obj in gc.get_objects(): | for obj in gc.get_objects(): | ||
if hasattr(obj, '__class__') and obj.__class__.__name__ | if hasattr(obj, '__class__') and 'ChooserListView' in obj.__class__.__name__: | ||
logging.debug(obj) | logging.debug(obj) | ||
Latest revision as of 20:33, 23 February 2010
Just a quick dump of the snippets I use for profiling:
First use a system-wide profiler like sysprof
Next, profile python code, open the output with kcachegrind:
import os import cProfile import lsprofcalltree # http://www.gnome.org/~johan/lsprofcalltree.py profiler = cProfile.Profile() profiler.enable() ### code to profile ### profiler.disable() k = lsprofcalltree.KCacheGrind(profiler) data = open('/tmp/import.kgrind', 'w+') k.output(data) data.close()
Check for leaks:
import gobject
gobject.timeout_add(10000, self._log_mem_usage)
def _log_mem_usage(self):
import analysis, os, gc
for obj in gc.get_objects():
if hasattr(obj, '__class__') and 'ChooserListView' in obj.__class__.__name__:
logging.debug(obj)
for i in range(0, 10):
gc.collect()
logging.debug('mem: %i' % analysis.Analysis(os.getpid()).ApproxRealMemoryUsage())
return True
Rendering time of a widget/window:
def do_expose_event(self, event):
import time
t = time.time()
hippo.Canvas.do_expose_event(self, event)
logging.debug('listview expose event: %r' % (time.time() - t))