In principle, it’s also best to wrap all of this in a function, although it 
doesn’t seem to matter that much for this case (on my machine).

I get little over 0.6 seconds for the first, and about 0.55 s for the second 
and third. That sounds consistent with my expectation. Note also that the 
statement with rand has a slightly higher allocation. 

Since matrix multiplication seems to be slower on your machines (less cores?), 
whereas the time of rand is probably similar (since it is not multithreaded 
anyway if I am correct), then I guess the effect of rand is just unobservable 
in your timings. 

On 17 Jul 2014, at 15:54, Tomas Lycken <tomas.lyc...@gmail.com> wrote:

> @Jutho: My gut reaction was the same thing, but then I should be able to 
> reproduce the results, right? All three invocations take about 1.2-1.5 
> seconds on my machine.
> 
> // T
> 
> On Thursday, July 17, 2014 3:06:08 PM UTC+2, Jutho wrote:
> I don't know about the zeros, but one issue with your timings is certainly 
> that you also measure the time to generate the random numbers, which is most 
> probably not negligible.
> 
> Op donderdag 17 juli 2014 13:54:54 UTC+2 schreef Andrei Zh:
> I continue investigating matrix multiplication performance. Today I found 
> that multiplication by array of zeros(..) is several times faster than 
> multiplication by array of ones(..) or random numbers: 
> 
> julia> A = rand(200, 100)
> ...
> 
> julia> @time for i=1:1000 A * rand(100, 200) end 
>  elapsed time: 3.009730414 seconds (480160000 bytes allocated, 11.21% gc time)
> 
>  julia> @time for i=1:1000 A * ones(100, 200) end 
>  elapsed time: 2.973320655 seconds (480128000 bytes allocated, 12.72% gc time)
> 
>  julia> @time for i=1:1000 A * zeros(100, 200) end 
>  elapsed time: 0.438900132 seconds (480128000 bytes allocated, 85.46% gc time)
> 
> So, A * zeros() is about 6 faster than other kinds of multiplication. Note 
> also that it uses ~7x more GC time. 
> 
> On NumPy no such difference is seen:
> 
> In [106]: %timeit dot(A, rand(100, 200))
> 100 loops, best of 3: 2.77 ms per loop
> 
> In [107]: %timeit dot(A, ones((100, 200)))
> 100 loops, best of 3: 2.59 ms per loop
> 
> In [108]: %timeit dot(A, zeros((100, 200)))
> 100 loops, best of 3: 2.57 ms per loop
> 
> 
> So I'm curious, how multiplying by zeros matrix is different from other 
> multiplication types? 
> 
> 

Reply via email to