ANN: Release of NumPy 0.9.5
Travis E. Oliphant
oliphant.travis at ieee.org
Sat Feb 18 20:08:16 EST 2006
vinjvinj wrote:
> I read some of the earlier threads which essentially said that numpy is
> about 3-4 times slower then Numeric for smaller arrays. I'm assuming
> that applies only to operations that apply to the whole arrays.
>
> I was curious how the performance of the following operations would
> compare though:
> 1. Copying arrays
> 2. Creating arrays
> 3. Slicing Arrays
>
It is really hard to say unless you show specific applications:
But, here are some facts.
1) NumPy is in C just like Numeric
2) NumPy is more flexible than Numeric and that means a few more
if-statements and checks which can slow-down array creation and slicing.
3) Some optimizations have been done to remove unnecessary slowness
(e.g. unnecessary checking but more could be done).
4) Ufuncs have more overhead primarily because of
a) the ability to alter how errors are obtained using local /
global variables (these must be looked-up in a dictionary which is most
of the source of any performance penalty),
b) the ability for other objects that can be converted to arrays to
interact with ufuncs so that the original object is returned by the ufuncs
c) the fact that excessive copying is not done in order to
type-cast from one array to annother, this requires some "set-up" overhead
My understanding is that most of the "slow-downs" reported for small
arrays can be attributed to ufuncs, but there will be slower paths
through the C-code for other cases as well because of the increased
flexibility.
Our goal is to be as fast as we can be so give it a spin and tell us how
to improve...
Thanks,
-Travis
More information about the Python-list
mailing list