执行rustc -C help
节目(除其他外(:
-C opt-level=val -- optimize with possible levels 0-3, s, or z
我认为 0 到 3 级相当直观:级别越高,执行的优化就越积极。但是,我不知道s
和z
选项在做什么,也找不到有关它们的 Rust 相关信息。
似乎您不是唯一一个感到困惑的人,如 Rust 问题中所述。它似乎遵循与 Clang 相同的模式:
Os
用于在编译时优化大小。Oz
进一步优化尺寸。
看看 Rust 源代码中的这些和这些行,我可以说s
意味着优化大小,z
意味着进一步优化大小。
所有优化似乎都由LLVM代码生成引擎执行。
LLVM中的这两个序列,O和Oz,非常相似。Oz 调用 260 次传递(我使用的是 LLVM 12.0(,而 Os 调用 264 次。Oz的分析和优化序列几乎是Os的严格子序列,除了一次传递(opt-loops(,它出现在Os中的不同位置。也就是说,请注意,优化的效果仍然可以不同,因为它们使用不同的成本模型,例如,确定优化行为的常量。因此,对大小有影响的优化(如循环展开和内联(在这两个序列中的行为可能不同。