From a39aaf847957b32efca52246b1e90d07239deb1d Mon Sep 17 00:00:00 2001 From: sunface Date: Tue, 22 Feb 2022 22:08:20 +0800 Subject: [PATCH] update cargo profile --- contents/cargo/reference/profiles.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/contents/cargo/reference/profiles.md b/contents/cargo/reference/profiles.md index cd51f0f2..1143f49d 100644 --- a/contents/cargo/reference/profiles.md +++ b/contents/cargo/reference/profiles.md @@ -49,4 +49,23 @@ cargo build --profile release-lto 下面我们来看看 profile 中可以进行哪些优化设置。 #### opt-level +该字段用于控制 [`-C opt-level`](https://doc.rust-lang.org/stable/rustc/codegen-options/index.html#opt-level) 标志的优化级别。更高的优化级别往往意味着运行更快的代码,但是也意味着更慢的编译速度。 + +同时,更高的编译级别甚至会造成编译代码的改变和再排列,这会为 debug 带来更高的复杂度。 + +`opt-level` 支持的选项包括: + +- `0`: 无优化 +- `1`: 基本优化 +- `2`: 一些优化 +- `3`: 全部优化 +- "s": 优化输出的二进制文件的大小 +- "z": 优化二进制文件大小,但也会关闭循环向量化 + +我们非常推荐你根据自己的需求来找到最适合的优化级别(例如,平衡运行和编译速度)。而且有一点值得注意,有的时候优化级别和性能的关系可能会出乎你的意料之外,例如 `3` 比 `2` 更慢,再比如 `"s"` 并没有让你的二进制文件变得更小。 + +而且随着 `rustc` 版本的更新,你之前的配置也可能要随之变化,总之,为项目的热点路径做好基准性能测试是不错的选择,不然总不能每次都手动重写代码来测试吧 :) + +如果想要了解更多,可以参考 [rustc 文档](https://doc.rust-lang.org/stable/rustc/profile-guided-optimization.html),这里有更高级的优化技巧。 + #### lto \ No newline at end of file