[Numpy-discussion] Slicing slower than matrix multiplication?

Hoyt Koepke hoytak@cs.ubc...
Fri Dec 11 22:26:29 CST 2009


> One thing to note is that dot uses optimized atlas if available, which
> makes it quite faster than equivalent operations you would do using
> purely numpy. I doubt that's the reason here, since the arrays are
> small, but that's something to keep in mind when performances matter:
> use dot wherever possible, it is generally faster than prod/sum,

This is quite true; I once had a very large matrix  (600 x 200,000)
that I needed to normalize.  Using .sum( ) and /= took about 30
minutes.  When I switched to using dot( ) to do the same operation
(matrix multiplication with a vector of 1's, then turning that into a
diagonal matrix and using dot() again to normalize it), it dropped the
computation time down to about 2 minutes.   Most of the gain was
likely due to ATLAS using all the cores and numpy only using 1, but I
was still impressed.

--Hoyt

++++++++++++++++++++++++++++++++++++++++++++++++
+ Hoyt Koepke
+ University of Washington Department of Statistics
+ http://www.stat.washington.edu/~hoytak/
+ hoytak@gmail.com
++++++++++++++++++++++++++++++++++++++++++


More information about the NumPy-Discussion mailing list