[Numpy-discussion] Profiling numpy ? (parts written in C)

David Cournapeau david at ar.media.kyoto-u.ac.jp
Tue Dec 19 21:36:15 EST 2006


Francesc Altet wrote:
> A Dimarts 19 Desembre 2006 08:12, David Cournapeau escrigué:
>> Hi,
>>
>>    Following the discussion on clip and other functions which *may* be
>> slow in numpy, I would like to know if there is a way to easily profile
>> numpy, ie functions which are written in C.
>>    For example, I am not sure to understand why a function like take(a,
>> b) with a a double 256x4 array and b a 8000x256 int array takes almost
>> 200 ms on a fairly fast CPU; in the source code, I can see that numpy
>> uses memmove, and I know memmove to be slower than memcpy. Is there an
>> easy way to check that this is coming from memmove (case in which
>> nothing much can be done to improve the situation I guess), and not from
>> something else ?
>
> For doing profiles on C extensions, you can use cProfile, which has
> been included in Python 2.5. See an example of your benchmark using
> cProfile below.
I haven't used python2.5 cprofile yet, mainly because of a really 
annoying bug of ubuntu with python2.5 and ctypes, which makes it 
unusable for me.

I totally forgot about ooprofile, which I tried once some time ago; I 
really like what I saw then. Thank you for the tip !

Concerning the memmove vs memcpy: the problem I was speaking about is in 
another function (numpy take), where the problem is much bigger speed wise.

I will be on holiday starting from tomorrow, with a big flight from 
Osaka to France, so I will have some time in the plane to investigate 
those :)

cheers,

David



More information about the NumPy-Discussion mailing list