[pypy-dev] How's the JIT coming along?
David Cournapeau
david at ar.media.kyoto-u.ac.jp
Wed Aug 22 07:56:15 CEST 2007
Leonardo Santagada wrote:
>
> Em Aug 21, 2007, às 11:22 PM, David Cournapeau escreveu:
>> I cannot speak for Garry, but I myself would be interested in pypy for
>> numerical computing in python. Basically, there are cases where numpy is
>> not enough and require coding in C. The two cases I am thinking are:
>> - recursive algorithms: this means many functions calls, which are
>> too expensive in python (eg: imagine you have a two buffers of many
>> float x, and you want to compute f(x[i], [y[i], nu[i]) = x[i+1] = x[i] +
>> nu[i] * (x[i] - y[i]); even using ctypes for the trivial computation in
>> C kills performances because of the many calls)
>> - algorithms which require many temporaries to be efficient in
>> numpy.
>>
>> Both of them, if my understanding is right, would be perfect exemples of
>> easy to optimize using JIT.
>
> I'm guessing here, but to my knoledge to make python functions more
> lightweight using jit would only work by making tail call
> optimization, but for that you can also do the "same" optimization by
> using a explicit stack and not use function calls at all.
Mmh, tail call optimization is useful for recursion, right ? I should
not have used recursive in my post, actually, because the recursive I am
talking about is not really what is meant in programming. The probleme
in my case is not so much the stack, but the function call by itself.
For example, the following python code:
class A:
def _foo(self):
return None
def foo(self):
return self._foo()
Is extremely slow compared to a compiled language like C. On my
computer, I can only execute the above function around 1 millon times a
second (it takes around 3500 cycles by using %timeit from ipython). This
forces me to avoid functions in some performance intensive code, which
is ugly. Basically, I am interested in the kind of things described
there: http://www.avibryant.com/2006/09/index.html.
David
More information about the Pypy-dev
mailing list