目前我正在实现一些排序算法。由于算法的本质,使用 len()
方法对一些数组/切片的长度进行了大量调用。
现在,考虑下面这段代码,它是归并排序算法的一部分:
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
切片的长度创建一个临时变量?或者编译器会自行处理这个问题?