Make sure you run your function once before you time anything.

--Tim

On Wednesday, October 14, 2015 08:38:55 AM Alan Crawford wrote:
> I have written the following test to see the difference between going
> copying element-by-element and using copy!(x,y):
> 
> function test1(x,y)
> for i in eachindex(x)
>     @inbounds x[i] = y[i]
> end
> end
> 
> function test2(x,y)
> copy!(x,y)
> end
> 
> function test()
> NumObs = 1000
> x = rand(NumObs)
> y = rand(NumObs)
> test1(x,y)
> test2(x,y)
> println("Test 1")
> @time(for z in 1:1e5 test1(x,y) end)
> println("Test 2")
> @time(for z in 1:1e5 test2(x,y) end)
> end
> test()
> 
> 
> I get the following timings:
> 
> Test 1
> 
>   0.031750 seconds
> 
> Test 2
> 
>   0.009360 seconds
> 
> So it seems copy!() is quite a bit faster ...
> 
> I ran this test because I would like to copy an element of a vector y into
> an element of vector x, but x and y are not the same everywhere - so i
> can’t do copy!(x,y). Moreover, since copy!() only works on arrays, I can’t
> do copy!(x[i],y[i]).
> 
> So my question is whether there is a way to get the speed of copy!() , but
> for copying a Float to a Float? Seems like i am probably missing something
> fairly simple...
> 
> Thanks
> Alan

Reply via email to