Rust Optimization
Rust 性能优化
这里所称性能优化实际上就是 Rust 的正确打开方式,因为 Rust 的安全特性导致按照 c/c++ 方式直接写程序有可能速度会比较慢。
避免边界检查
参考资料
- 这里 的说明
使用 slice 为编译器提示长度
vec 等类型的参数传递给函数后,在函数内部重新用 slice 的方式定义变量
fn f_for(a: &Vec<f64>, b: &mut Vec<f64>){
// 不可变量直接用长度做 slice
let a = &a[..a.len()];
// 可变量先定义一个长度再做 slice
let len_b = b.len();
let b = &mut b[..len_b];
}
尽可能使用迭代器而不是指标循环
迭代器中的边界检查被优化掉了
for (i, ai) in a.iter().enumerate(){
do_something();
}
// 而不是
for i in 0..n{
a[i];
}
不得不用指标获得值时用 unsafe 的非检查方式
当确保指标不会越界时就可以大胆使用 unsafe
for i in 0..n{
unsafe {
a.get_unchecked(i);
}
}
// not
a[i];
评论
Comments powered by Disqus