From: Albert S. <fu...@gm...> - 2006-10-04 05:31:58
|
Hello all > -----Original Message----- > From: Travis Oliphant [mailto:oli...@ee...] > Sent: 03 October 2006 03:51 > To: Discussion of Numerical Python; Albert Strasheim > Subject: Re: ***[Possible UCE]*** Re: [Numpy-discussion] Vectorizing code, > for loops, and all that > > <snip> > >Meanwhile, I can confirm that the NOBUFFER_UFUNCLOOP case in > >PyUFunc_GenericFunction is getting exercised in the slower case. Here's > some > >info on what's happening, courtesy of Rational Quantify: > > > >case NOBUFFER_UFUNCLOOP: > >while (loop->index < loop->size) { > > for (i=0; i<self->nargs; i++) > > loop->bufptr[i] = loop->iters[i]->dataptr; [1] > > > > loop->function((char **)loop->bufptr, &(loop->bufcnt), > > loop->steps, loop->funcdata); [2] > > UFUNC_CHECK_ERROR(loop); > > > > for (i=0; i<self->nargs; i++) { > > PyArray_ITER_NEXT(loop->iters[i]); [3] > > } > > loop->index++; > >} > >break; > > > >[1] 12.97% of function time > >[2] 8.65% of functiont ime > >[3] 62.14% of function time > > > >If statistics from elsewhere in the code would be helpful, let me know, > and > >I'll see if I can convince Quantify to cough it up. > > > Please run the same test but using > > x1 = N.random.rand(39,2000) > x2 = N.random.rand(39,64,1) > > z1 = x1[:,N.newaxis,:] - x2 Very similar results to what I had previously: [1] 10.88% [2] 7.25% [3] 68.25% Cheers, Albert |