[Numpy-discussion] my cython is slow

Eric Firing efiring at hawaii.edu
Wed Jan 7 18:37:56 EST 2009


John Hunter wrote:
> Partly as an excuse to learn cython, and partly because I need to eke
> out some extra performance of a neighborhood search, I tried to code
> up a brute force neighborhood search in cython around an N-dimensional
> point p.  I need to incrementally add a point, do a search, add
> another point, do another search, so some of the algorithms like those
> in scipy.stats.spatial which assume a static data structure with lots
> of searches over it probably won't help me.
> 
> I wrote some cython code to grow a Npoints x Ndimensions numpy array
> (doubling in size every time I exceed Npoints) and then doing a brute
> force request for all points within a radius r using a euclidean
> distance.  The code is working fine, but it is still slower than a
> simple numpy implementation (damn you numpy performance!)

A couple small changes speed it up quite a bit:

efiring at manini:~/temp/nnbf$   python test_nnbf.py
loading data... this could take a while
testing nnbf...
     10 trials: mean=0.0150, min=0.0100
testing numpy...
     10 trials: mean=0.0660, min=0.0600

It is all a matter of keeping Python objects and function calls out of 
inner loops.  I suspect there is quite a bit more that could be done in 
that regard, but I haven't looked.

Eric
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nnbf.pyx
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20090107/9d163cb6/attachment.ksh>


More information about the NumPy-Discussion mailing list