import errno | |
import hotshot | |
import hotshot.stats | |
import sys | |
import test.pystone | |
def main(logfile): | |
p = hotshot.Profile(logfile) | |
benchtime, stones = p.runcall(test.pystone.pystones) | |
p.close() | |
print "Pystone(%s) time for %d passes = %g" % \ | |
(test.pystone.__version__, test.pystone.LOOPS, benchtime) | |
print "This machine benchmarks at %g pystones/second" % stones | |
stats = hotshot.stats.load(logfile) | |
stats.strip_dirs() | |
stats.sort_stats('time', 'calls') | |
try: | |
stats.print_stats(20) | |
except IOError, e: | |
if e.errno != errno.EPIPE: | |
raise | |
if __name__ == '__main__': | |
if sys.argv[1:]: | |
main(sys.argv[1]) | |
else: | |
import tempfile | |
main(tempfile.NamedTemporaryFile().name) |