我正在使用Julia实现归并排序作为练习,并注意到在使用 copy! 和传统的切片赋值(已注释部分)时,性能和内存分配略有差异。 有人可以解释一下这种差异的根源吗?
我的合并函数在MergeSort中
我的合并函数在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