[Numpy-discussion] algorithm, optimization, or other problem?

Brian Blais bblais at bryant.edu
Thu Feb 23 09:35:11 EST 2006


Nadav Horesh wrote:
> It is slower.
> 
> I did a little study on this issue since I got into the issue of 
> algorithms that can not be easily vectorized (like this one).
> On my PC an outer loop step took initially 17.3 seconds, and some 
> optimization brought it down to ~11 seconds.  The dot product consumed 
> about 1/3 of the time. I estimate that objects creation/destruction 
> consumes most of the cpu time. It seems that this way comes nowhere near 
> cmex speed. I suspect that maybe blitz/boost may bridge the gap.
> 

yeah, I realized that pure python would be too slow, because I ran into the exact 
same problem with matlab scripting.  these time-dependent loops are really a mess 
when it comes to speed optimization.

After posting to the Pyrex list, someone pointed out that my loop variables had not 
been declared as c datatypes.  so, I had loops like:

for it from 0 <= it <= 1000:
	for i from 0 <= i <= 100:

		(stuff)

and the "it" and "i" were being treated, due to my oversight, as python variables. 
for speed, you need to have all the variables in the loop as c datatypes.  just 
putting a line in like:

cdef int it,i

increases the speed from 8 seconds per block to 0.2 seconds per block, which is 
comparable to the mex.

I learned that I have to be a bit more careful!  :)


			thanks,

				Brian Blais


-- 
-----------------

             bblais at bryant.edu
             http://web.bryant.edu/~bblais




More information about the NumPy-Discussion mailing list