[Numpy-discussion] The NumPy Mandelbrot code 16x slower than Fortran
Mark Wiebe
mwwiebe at gmail.com
Tue Jan 24 19:33:44 EST 2012
2012/1/21 Ondřej Čertík <ondrej.certik at gmail.com>
> <snip>
>
> Let me know if you figure out something. I think the "mask" thing is
> quite slow, but the problem is that it needs to be there, to catch
> overflows (and it is there in Fortran as well, see the
> "where" statement, which does the same thing). Maybe there is some
> other way to write the same thing in NumPy?
>
In the current master, you can replace
z[mask] *= z[mask]
z[mask] += c[mask]
with
np.multiply(z, z, out=z, where=mask)
np.add(z, c, out=z, where=mask)
The performance of this alternate syntax is still not great, but it is
significantly faster than what it replaces. For a particular choice of
mask, I get
In [40]: timeit z[mask] *= z[mask]
10 loops, best of 3: 29.1 ms per loop
In [41]: timeit np.multiply(z, z, out=z, where=mask)
100 loops, best of 3: 4.2 ms per loop
-Mark
> Ondrej
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120124/0a9719a7/attachment.html>
More information about the NumPy-Discussion
mailing list