什么优化级别`-Os`和`-Oz`在rustc中做什么?

Luk*_*odt 23 rust llvm-codegen

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

-C opt-level=val       -- optimize with possible levels 0-3, s, or z
Run Code Online (Sandbox Code Playgroud)

我认为级别0到3非常直观:级别越高,执行的优化程度越高.但是,我不知道这些sz选项正在做什么,我找不到与它相关的Rust相关信息.

小智 17

看起来你并不是唯一一个困惑的人,正如Rust问题所描述的那样.它似乎遵循与Clang相同的模式:

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

  • @Mehrdad我想它更像是's`用于尺寸,而`z`用于尺寸. (4认同)
  • 您能否更详细地描述一下“s”和“z”与 0--3 相比如何工作?它们是完全不同的优化配置文件吗?或者它们是“像2,加上一些额外的优化过程”或类似的东西? (2认同)

red*_*ime 12

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

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

  • 您能否更详细地描述一下“s”和“z”与 0--3 相比如何工作?它们是完全不同的优化配置文件吗?或者它们是“像2,加上一些额外的优化过程”或类似的东西? (2认同)