On Wed, Dec 22, 2010 at 12:21 AM, Francesc Alted <faltet@pytables.org> wrote:
<snip>
Wow, really nice work!  It would be great if that could make into NumPy
:-)  Regarding your comment on numexpr being faster, I'm not sure (your
new_iterator branch does not work for me; it gives me an error like:
AttributeError: 'module' object has no attribute 'newiter'),

What are you using to build it?  So far I've just modified the setup.py scripts, I still need to add it to numscons.
 
but my
guess is that your approach seems actually faster:

>>> a = np.random.random((50,50,50,10))
>>> b = np.random.random((50,50,1,10))
>>> c = np.random.random((50,50,50,1))
>>> timeit 3*a+b-(a/c)
10 loops, best of 3: 67.5 ms per loop
>>> import numexpr as ne
>>> ne.evaluate("3*a+b-(a/c)
>>> timeit ne.evaluate("3*a+b-(a/c)")
10 loops, best of 3: 42.8 ms per loop

i.e. numexpr is not able to achieve the 2x speedup mark that you are
getting with ``luf`` (using a Core2 @ 3 GHz here).

That's promising!  I based my assertion on getting a slower speedup than numexpr does on their front page example.

-Mark