pypy on windows much slower than linux/mac when using complex number type?
Christian Gollwitzer
auriocus at gmx.de
Sat Sep 24 03:22:04 EDT 2016
Am 23.09.16 um 21:50 schrieb Irmen de Jong:
> The problem boiled down to a performance issue in window's 32 bits implementation of the
> hypot() function (which abs(z) uses when z is a complex number type).
> The 64 bits windows crt lib version is much faster (on par with what is to be expected
> from the linux or osx version), but unfortunately there's no 64 bits pypy
> implementation for windows.
> Replacing abs(z) by sqrt(r*r+i*i) avoids the problem and is even faster still.
Interesting! Now beware that a "real" hypot function does approximately
the following:
def myhypot(r, i):
if abs(r)>abs(i):
c = i/r
return abs(r)*sqrt(1+c*c)
else:
if i==0:
return 0.0
else:
c=r/i
return abs(i)*sqrt(1+c*c)
it can well be, that the old 32bit MSVCRT does simply that, which
requires some floating point ops, whereas the more modern 64bit lib uses
hand-tuned SSE to perform the equivalent. Just for fun, you could try
this hypot to see how it performs.
Christian
More information about the Python-list
mailing list