1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
import time
import py
py.path.local(__file__)
from rpython.jit.tl.tlc import interp, interp_nonjit, ConstantPool
from rpython.jit.backend.hlinfo import highleveljitinfo
def entry_point(args):
"""Main entry point of the stand-alone executable:
takes a list of strings and returns the exit code.
"""
# store args[0] in a place where the JIT log can find it (used by
# viewcode.py to know the executable whose symbols it should display)
exe = args[0]
args = args[1:]
highleveljitinfo.sys_executable = exe
if len(args) < 2:
print "Usage: %s [--onlyjit] filename x" % (exe,)
return 2
onlyjit = False
if args[0] == '--onlyjit':
onlyjit = True
args = args[1:]
filename = args[0]
x = int(args[1])
bytecode, pool = load_bytecode(filename)
if not onlyjit:
start = time.clock()
res = interp_nonjit(bytecode, inputarg=x, pool=pool)
stop = time.clock()
print 'Non jitted: %d (%f seconds)' % (res, stop-start)
start = time.clock()
res = interp(bytecode, inputarg=x, pool=pool)
stop = time.clock()
print 'Warmup jitted: %d (%f seconds)' % (res, stop-start)
start = time.clock()
res = interp(bytecode, inputarg=x, pool=pool)
stop = time.clock()
print 'Warmed jitted: %d (%f seconds)' % (res, stop-start)
return 0
def load_bytecode(filename):
from rpython.rlib.streamio import open_file_as_stream
from rpython.jit.tl.tlopcode import decode_program
f = open_file_as_stream(filename)
return decode_program(f.readall())
def target(driver, args):
return entry_point
# ____________________________________________________________
if __name__ == '__main__':
import sys
sys.exit(entry_point(sys.argv))
|