繁体   English   中英

rustc 中的优化级别 `-Os` 和 `-Oz` 有什么作用?

[英]What do the optimization levels `-Os` and `-Oz` do in rustc?

执行rustc -C help显示(除其他外):

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

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

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

  • Os用于优化编译时的大小。
  • Oz进行更多尺寸优化。

查看 Rust 源代码中的这些这些行,我可以说s表示针对大小进行优化,而z表示针对大小进行更多优化。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM