Copy uses memmove which uses hand-coded assembly for optimal data copy
performance.

On Wed, Oct 14, 2015 at 9:08 PM, Alan Crawford <a.r.crawf...@gmail.com>
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