per-function jit compiler

Chris Rebert clp2 at rebertia.com
Tue Apr 6 02:40:46 EDT 2010


2010/4/5 Luis M. González <luismgz at gmail.com>:
> This post gave me an idea: http://groups.google.com/group/comp.lang.python/msg/5d75080707104b76
>
> What if I write a simple decorator to figure out the types of every
> function, and then we use it as a base for a simple method-jit
> compiler for python?
>
> example:
>
> def typer(f):
>        def wrap(*args):
>            a = f.func_code.co_varnames
>            b = [type(i) for i in args]
>            return dict(zip(a,b))
>        return wrap
>
> @typer
> def spam(a, b, c=3, d=4):
>        pass
>
>>>> spam(8,'hello',9.9, 10)
> {'a': <type 'int'>, 'c': <type 'float'>, 'b': <type 'str'>, 'd':<type
> 'int'>}
>
> So by using this information, we record all the argument types used
> the first time each function/method is executed, and then we generate
> optimized code for them.
> >From this point on, a guard should check if all arguments remain the
> same and, if so, the optimized code is run.
> Otherwise, just fall back to the interpreter.
>
> He! I have no idea how to implement it...

Guido's been lending out his time machine again:
http://psyco.sourceforge.net/introduction.html

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list