Rust Optimization

Rust 性能优化

这里所称性能优化实际上就是 Rust 的正确打开方式,因为 Rust 的安全特性导致按照 c/c++ 方式直接写程序有可能速度会比较慢。

避免边界检查

参考资料

  1. 这里 的说明

使用 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