作为一项练习,我正在尝试在Rust 1.3.0中进行代码的微观优化。我有一个包含嵌套循环的数组。类似于这样:
loop {
for i in 0..arr.len() {
// something happens here
}
}
由于 Rust 中的数组大小固定,编译器是否会通过只计算一次 arr.len()
并重复使用该值来优化代码呢?还是说每次顶层循环都会重新评估表达式?这个问题也可以扩展到更多计算量较大且没有副作用的函数,除了arr.len()
。
换句话说,上述代码是否等同于以下代码:
let arr_len = arr.len();
loop {
for i in 0..arr_len {
// something happens here
}
}
for v in &arr
。 - undefined