你正在写Rust但是它却不够快?即使你已经执行了cargo build --release? 这里是一些实用的小技巧用于提升Rust项目的运行时速度而不用修改任何代码。
请记住下面建议但是不要替换掉掉实际性能分析和优化。我也认为能够在实际使用中表现出的基准测试(benchmarks)是唯一有效的方式。
调整我们的release profile
首先让我们在执行cargo build --release的时候开启一些优化选项。处理很简单: 我们开启一些功能,这些功能会让发布构建更慢,但是能够得到更加彻底的优化。
我们添加下面的标记到我们的主Cargo.toml文件里,也就是cargo工作目录下最上层的Cargo.toml.如果你的文件里没有profile.release这部分,手动添加:
[profile.release]
链接时优化
接下来我们要做的第一件事就是开启[链接时优化](link-time optimization) (LTO)。这是一种整个程序或者内部模块优化因为它是链接不同部分到你的二进制(程序)的最后一步。你可以把它想象为跨越不同依赖边界时允许更好的内联(当然这也会更加复杂)。
Rust可以使用多种链接器风格(flavors),其中我们想要的一种是"贯穿所有crates优化(optimize across all crates)",也被叫"胖(fat)"。要设置这个选项,需要在你的profile里添加lto标记:
lto = "fat"
代码生成单元
接下来是一个相似的主题。为了加速编译时间,Rust尝试把你的crates分割成小块然后尽可能地并行编译。这样做的缺点就是编译器在这些块至今能够优化的地方就少了。所以,让我们告诉编译器每次把一crate作为一个块:
codegen-