[Numpy-discussion] Vectorizing code, for loops, and all that
Albert Strasheim
13640887 at sun.ac.za
Tue Oct 3 04:12:36 CDT 2006
Hello all
> -----Original Message-----
> From: Travis Oliphant [mailto:oliphant at ee.byu.edu]
> 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
More information about the Numpy-discussion
mailing list