[Numpydiscussion] Why is numpy.abs so much slower on complex64 than complex128 under windows 32bit?
Henry Gomersall
heng@cantab....
Tue Apr 10 06:44:43 CDT 2012
Here is the body of a post I made on stackoverflow, but it seems to be a
nonobvious issue. I was hoping someone here might be able to shed light
on it...
On my 32bit Windows Vista machine I notice a significant (5x) slowdown
when taking the absolute values of a fairly large numpy.complex64
array when compared to a numpy.complex128 array.
>>> import numpy
>>> a= numpy.random.randn(256,2048) + 1j*numpy.random.randn(256,2048)
>>> b= numpy.complex64(a)
>>> timeit c= numpy.float32(numpy.abs(a))
10 loops, best of3: 27.5 ms per loop
>>> timeit c= numpy.abs(b)
1 loops, best of3: 143 ms per loop

Obviously, the outputs in both cases are the same (to operating precision).
I do not notice the same effect on my Ubuntu 64bit machine (indeed, as
one might expect, the double precision array operation is a bit slower).
Is there a rational explanation for this?
Is this something that is common to all windows?
In a related note of confusion, the times above are notably (and
consistently) different (shorter) to that I get doing a naive `st =
time.time(); numpy.abs(a); print time.time()st`. Is this to be expected?
Cheers,
Henry
 next part 
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpydiscussion/attachments/20120410/4add6490/attachment0001.html
More information about the NumPyDiscussion
mailing list