В настоящий момент я реализую некоторые алгоритмы сортировки. Поскольку в природе алгоритмов существует много вызовов по длине некоторых массивов/срезов с использованием метода len()
.
Теперь, учитывая следующий код для (части) алгоритма Mergesort:
for len(left) > 0 || len(right) > 0 {
if len(left) > 0 && len(right) > 0 {
if left[0] <= right[0] {
result = append(result, left[0])
left = left[1:len(left)]
} else {
result = append(result, right[0])
right = right[1:len(right)]
}
} else if len(left) > 0 {
result = append(result, left[0])
left = left[1:len(left)]
} else if len(right) > 0 {
result = append(result, right[0])
right = right[1:len(right)]
}
}
Мой вопрос: эти вызовы len() влияют на производительность алгоритма отрицательно? Лучше ли сделать временную переменную для длины фрагмента right
и left
? Или компилятор делает это сам?