Я реализовал сортировку слиянием в Julia в качестве упражнения и заметил, что есть небольшая разница в производительности и распределении памяти, когда я использую copy! и традиционное присвоение значения с помощью sling (бит комментария ). Может кто-нибудь объяснить, из-за чего эта разница?
Моя функция слияния в MergeSort
function myMerge(left, right)
l = 1
r = 1
k = length(left) + length(right)
result = zeros(k)
for i in 1:k
if left[l] <= right[r]
result[i] = left[l]
l += 1
if l > length(left)
#result[i+1:end] = right[r:end] # <-------- this is slower and uses more memory
copy!(result, i+1, right, r) # <-------- this is faster
return result
end
else
result[i] = right[r]
r += 1
if r > length(right)
#result[i+1:end] = left[l:end]# <-------- this is slower and uses more memory
copy!(result, i+1, left, l) # <-------- this is faster
return result
end
end
end
return result
end