30

执行rustc -C help节目(除其他外):

-C opt-level=val       -- optimize with possible levels 0-3, s, or z

我认为 0 到 3 级相当直观:级别越高,执行的优化就越积极。但是,我不知道sandz选项在做什么,也找不到关于它们的 Rust 相关信息。

4

3 回答 3

20

正如Rust 问题中所述,您似乎不是唯一一个感到困惑的人。它似乎遵循与 Clang 相同的模式:

  • Os用于在编译时优化大小。
  • Oz进行更多尺寸优化。
于 2017-08-10T08:46:58.933 回答
15

看看Rust 源代码中的这些这些行,我可以说这s意味着优化大小,并且z意味着更多地优化大小。

所有优化似乎都由 LLVM 代码生成引擎执行。

于 2017-08-10T08:47:53.687 回答
3

LLVM 中的这两个序列 Os 和 Oz 非常相似。Oz 调用 260 次传递(我使用的是 LLVM 12.0),而 Os 调用 264。Oz 的分析和优化序列几乎是 Os 的严格子序列,除了一次传递(opt -loops),它出现在内部的不同位置奥斯。这就是说,请注意优化的效果仍然可能不同,因为它们使用不同的成本模型,例如,确定优化行为的常数。因此,对大小有影响的优化,如循环展开和内联,在这两个序列中可能表现不同。

于 2021-04-05T17:35:19.210 回答