[Numpy-discussion] performance problem
Travis Oliphant
oliphant.travis at ieee.org
Mon Jan 30 00:24:01 CST 2006
Gerard Vermeulen wrote:
>Hi Travis, thanks for your incredible quick fixes.
>
>numpy is about 5 times slower than numarray (on my numarray-friendly bi-pentium):
>
>
>
This is a coercion issue.
NumPy is exercising the most complicated section of the ufunc code
requiring buffered casting because you are asking it to combine a uint32
array with a signed scalar (so the only commensurable type is a signed
scalar of type int64. This is then coerced back into the unsigned array).
Look at the data-type of b = a << 8.
(a<<8).dtype.name
'int64'
Try
a<<=val where val = uint32(8) is in the header
You should see more commensurate times.
We can of course discuss the appropriateness of the coercion rules.
Basically scalars don't cause coercion unless they are of a different
kind but as of now signed and unsigned integers are considered to be of
different kinds. I think that there is a valid point to be made that
all scalar integers should be treated the same since Python only has one
way to enter an integer.
Right now, this is not what's done, but it could be changed rather easily.
-Travis
More information about the Numpy-discussion
mailing list