1 import errno 2 import hotshot 3 import hotshot.stats 4 import sys 5 import test.pystone 6 7 def main(logfile): 8 p = hotshot.Profile(logfile) 9 benchtime, stones = p.runcall(test.pystone.pystones) 10 p.close() 11 12 print "Pystone(%s) time for %d passes = %g" % \ 13 (test.pystone.__version__, test.pystone.LOOPS, benchtime) 14 print "This machine benchmarks at %g pystones/second" % stones 15 16 stats = hotshot.stats.load(logfile) 17 stats.strip_dirs() 18 stats.sort_stats('time', 'calls') 19 try: 20 stats.print_stats(20) 21 except IOError, e: 22 if e.errno != errno.EPIPE: 23 raise 24 25 if __name__ == '__main__': 26 if sys.argv[1:]: 27 main(sys.argv[1]) 28 else: 29 import tempfile 30 main(tempfile.NamedTemporaryFile().name) 31