[Fwd: Re: [Numpy-discussion] Numpy and PEP 343]

Tim Hochberg tim.hochberg at cox.net
Sat Mar 4 06:59:04 EST 2006


Check this out:

   Expression: where(0.1*a > arctan2(a, b), 2*a, arctan2(a,b))
   numpy: 0.706635284652
   Skipping weave timing
   numexpr: 0.19127785794
   Speed-up of numexpr over numpy: 3.69428689898

270% speed up! Pretty cool. Unfortunately, my implementation of two and 
three argument functions is still buggy if one of the arguments is a 
constant. I'm not sure what the best tactic is to deal with that. My 
strategy for dealing with opcodes that require more than three arguments 
(just 'where' at present) was to just use two opcode blocks. The second 
opcode block had the opcode OP_NOOP (which does nothing), but the first 
opcode steals arguments from it. It's pretty simple and more or less 
infinitely expandable.

I'm off to bed now, perhaps the answer to the constant dilemma will be 
clear in the morning.

[next morning]

OK, I know how to fix it, I just need to scrape together a few minutes to do it.


-tim







More information about the NumPy-Discussion mailing list