[pypy-svn] r77444 - pypy/trunk/pypy/jit/tool
antocuni at codespeak.net
antocuni at codespeak.net
Tue Sep 28 14:55:14 CEST 2010
Author: antocuni
Date: Tue Sep 28 14:55:13 2010
New Revision: 77444
Modified:
pypy/trunk/pypy/jit/tool/loopviewer.py
Log:
add the possibility to print a summary of the operations contained in the loop
Modified: pypy/trunk/pypy/jit/tool/loopviewer.py
==============================================================================
--- pypy/trunk/pypy/jit/tool/loopviewer.py (original)
+++ pypy/trunk/pypy/jit/tool/loopviewer.py Tue Sep 28 14:55:13 2010
@@ -1,30 +1,48 @@
#!/usr/bin/env python
-""" Usage: loopviewer.py [loopnum] loopfile
+"""
+Parse and display the traces produced by pypy-c-jit when PYPYLOG is set.
"""
import autopath
import py
import sys
+import optparse
+from pprint import pprint
from pypy.tool import logparser
from pypy.jit.metainterp.test.oparser import parse
from pypy.jit.metainterp.history import ConstInt
from pypy.rpython.lltypesystem import llmemory, lltype
-def main(loopnum, loopfile):
+def main(loopfile, options):
+ print 'Loading loop:'
log = logparser.parse_log_file(loopfile)
+ print
loops = logparser.extract_category(log, "jit-log-opt-")
- inp = loops[loopnum]
+ inp = loops[options.loopnum]
loop = parse(inp, no_namespace=True)
- loop.show()
+ if not options.quiet:
+ loop.show()
+ if options.summary:
+ print 'Summary:'
+ print_summary(loop.summary())
+
+def print_summary(summary):
+ keys = sorted(summary)
+ for key in keys:
+ print '%4d' % summary[key], key
if __name__ == '__main__':
- if len(sys.argv) == 2:
- loopnum = -1
- loopfile = sys.argv[1]
- elif len(sys.argv) == 3:
- loopnum = int(sys.argv[1])
- loopfile = sys.argv[2]
- else:
- print __doc__
- sys.exit(1)
- main(loopnum, loopfile)
+ parser = optparse.OptionParser(usage="%prog loopfile [options]")
+ parser.add_option('-n', '--loopnum', dest='loopnum', default=-1, metavar='N', type=int,
+ help='show the loop number N [default: last]')
+ parser.add_option('-s', '--summary', dest='summary', action='store_true', default=False,
+ help='print a summary of the operations in the loop')
+ parser.add_option('-q', '--quiet', dest='quiet', action='store_true', default=False,
+ help='do not show the graphical representation of the loop')
+
+ options, args = parser.parse_args()
+ if len(args) != 1:
+ parser.print_help()
+ sys.exit(2)
+
+ main(args[0], options)
More information about the Pypy-commit
mailing list