[Fwd: [Fwd: Re: [Numpy-discussion] Numpy and PEP 343]]
Tim Hochberg
tim.hochberg at cox.net
Sat Mar 4 07:00:03 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