[Numpy-discussion] strange sin/cos performance

David Cournapeau cournape at gmail.com
Mon Aug 3 09:44:28 EDT 2009


On Mon, Aug 3, 2009 at 10:32 PM, Andrew Friedley<afriedle at indiana.edu> wrote:
> While working on GSoC stuff I came across this weird performance behavior
> for sine and cosine -- using float32 is way slower than float64.  On a 2ghz
> opteron:
>
> sin float32 1.12447786331
> sin float64 0.133481025696
> cos float32 1.14155912399
> cos float64 0.131420135498

Which OS are you on ? FWIW, on max os x, with recent svn checkout, I
get expected results (float32 ~ twice faster).

>
> The times are in seconds, and are best of three runs of ten iterations of
> numpy.{sin,cos} over a 1000-element array (script attached).  I've produced
> similar results on a PS3 system also.  The opteron is running Python 2.6.1
> and NumPy 1.3.0, while the PS3 has Python 2.5.1 and NumPy 1.1.1.
>
> I haven't jumped into the code yet, but does anyone know why sin/cos are
> ~8.5x slower for 32-bit floats compared to 64-bit doubles?

My guess would be that you are on a platform where there is no sinf,
and our sinf replacement is bad for some reason.

> Side question:  I see people in emails writing things like 'timeit foo(x)'
> and having it run some sort of standard benchmark, how exactly do I do that?
>  Is that some environment other than a normal Python?

Yes, that's in ipython.

cheers,

David



More information about the NumPy-Discussion mailing list