[pypy-svn] r30403 - pypy/dist/pypy/translator/goal
arigo at codespeak.net
arigo at codespeak.net
Sun Jul 23 18:06:53 CEST 2006
Author: arigo
Date: Sun Jul 23 18:06:51 2006
New Revision: 30403
Modified:
pypy/dist/pypy/translator/goal/translate.py
Log:
Added option --profile to translate.py, using the cProfile module.
Modified: pypy/dist/pypy/translator/goal/translate.py
==============================================================================
--- pypy/dist/pypy/translator/goal/translate.py (original)
+++ pypy/dist/pypy/translator/goal/translate.py Sun Jul 23 18:06:51 2006
@@ -82,6 +82,8 @@
['annotate', 'rtype', 'backendopt', 'database', 'source'])],
'6_llinterpret': [OPT(('--llinterpret',), "Interpret the rtyped flow graphs", GOAL)],
+
+ '7_profile': [OPT(('--profile',), "cProfile (to debug the speed of the translation process)", True)],
},
@@ -116,7 +118,8 @@
'cc': None,
'profopt': None,
- 'fork_before': None
+ 'fork_before': None,
+ 'profile': False,
}
import py
@@ -270,7 +273,13 @@
from pypy.translator import translator
from pypy.translator import driver
from pypy.translator.tool.pdbplus import PdbPlusShow
-
+ if options.profile:
+ from cProfile import Profile
+ prof = Profile()
+ prof.enable()
+ else:
+ prof = None
+
t = translator.TranslationContext()
t.driver_options = options
@@ -294,6 +303,11 @@
pdb_plus_show = PdbPlusShow(t) # need a translator to support extended commands
def debug(got_error):
+ if prof:
+ prof.disable()
+ statfilename = 'prof.dump'
+ log.info('Dumping profiler stats to: %s' % statfilename)
+ prof.dump_stats(statfilename)
tb = None
if got_error:
import traceback
@@ -326,7 +340,7 @@
empty_translator=t,
disable=options.skipped_goals,
default_goal='compile')
- pdb_plus_show.expose({'drv': drv})
+ pdb_plus_show.expose({'drv': drv, 'prof': prof})
if drv.exe_name is None and '__name__' in targetspec_dic:
drv.exe_name = targetspec_dic['__name__'] + '-%(backend)s'
More information about the Pypy-commit
mailing list