On Thu, Feb 10, 2011 at 8:29 AM, eat <e.antero.ta...@gmail.com> wrote:

> Hi,
>
> Observing following performance:
> In []: m= 1e5
> In []: n= 1e2
> In []: o= ones(n)
> In []: M= randn(m, n)
> In []: timeit M.sum(1)
> 10 loops, best of 3: 38.3 ms per loop
> In []: timeit dot(M, o)
> 10 loops, best of 3: 21.1 ms per loop
>
> In []: m= 1e2
> In []: n= 1e5
> In []: o= ones(n)
> In []: M= randn(m, n)
> In []: timeit M.sum(1)
> 100 loops, best of 3: 18.3 ms per loop
> In []: timeit dot(M, o)
> 10 loops, best of 3: 21.2 ms per loop
>
> One would expect sum to outperform dot with a clear marginal. Does there
> exixts any 'tricks' to increase the performance of sum?
>
>

I'm not surprised, much depends on the version of ATLAS or MKL you are
linked to. If you aren't linked to either and just using numpy's version
then the results are a bit strange. With numpy development I get

In [1]: m= 1e5

In [2]: n= 1e2

In [3]: o= ones(n)

In [4]: M= randn(m, n)

In [5]: timeit M.sum(1)
100 loops, best of 3: 19.2 ms per loop

In [6]: timeit dot(M, o)
100 loops, best of 3: 15 ms per loop

In [7]: m= 1e2

In [8]: n= 1e5

In [9]: o= ones(n)

In [10]: M= randn(m, n)

In [11]: timeit M.sum(1)
100 loops, best of 3: 17.4 ms per loop

In [12]: timeit dot(M, o)
100 loops, best of 3: 14.2 ms per loop

Chuck
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to