[Numpy-discussion] Speed ups to matrix-vector multiplication
Travis Oliphant
oliphant.travis at ieee.org
Sat Jan 14 21:59:01 CST 2006
Travis Oliphant wrote:
> Paulo J. S. Silva wrote:
>
>> Numpy:
>>
>> In [27]:i = time.clock(); bench(A,b); time.clock() - i
>> Out[27]:10.610000000000014
>>
>>
>> Why is numpy so slow??????
>>
>>
>>
>
> I think the problem here is that using the properties here to take
> advantage of the nice matrix math stuff is slower than just computing
> the dot product in the fastest possible way with raw arrays. I've
> been concerned about this for awhile. The benchmark below makes my
> point.
>
> While a matrix is a nice thing, I think it will always be slower....
> It might be possible to speed it up and I'm open to suggestions...
Indeed it was possible to speed things up as Paulo pointed out, by using
the correct blas calls for the real size of the array.
With some relatively simple modifications, I was able to get significant
speed-ups in time using matrices:
import timeit
t1 = timeit.Timer('c = b.T*A; d=c*b','from numpy import rand,mat; A =
mat(rand(1000,1000));b = mat(rand(1000,1))')
t2 = timeit.Timer('c = dot(b,A); d=dot(b,c)','from numpy import rand,
dot; A = rand(1000,1000);b = rand(1000)')
t1.timeit(100)
1.4369449615478516
t2.timeit(100)
1.2983191013336182
Now, that looks more like a 10% overhead for the matrix class.
-Travis
More information about the Numpy-discussion
mailing list