gpt4 book ai didi

c++ - GCC:-O3 和 -Os 之间的区别

转载 作者:IT老高 更新时间:2023-10-28 13:00:24 26 4
gpt4 key购买 nike

我对 GCC -O3 标志非常熟悉,但它与 -Os 有何不同,在哪种情况下我们应该更喜欢一个而不是另一个?

最佳答案

GCC documentation非常明确地描述了这些选项的作用。

-O3 尝试大量优化代码以提高性能。它包括所有优化 -O2 包括,以及更多。

另一方面,

-Os 指示 GCC “优化大小”。它启用所有 -O2 优化不会增加可执行文件的大小,然后它还会切换一些优化标志以进一步减小可执行文件的大小。

请注意,我的描述故意含糊不清 - 请阅读 GCC 文档以更深入地讨论究竟为任一优化级别启用了哪些标志。

我相信 -O* 优化级别就是 - 互斥、不同的优化级别。混合它们并没有真正的意义,因为两个级别将启用或忽略另一个级别有意忽略或启用的标志(分别)。如果你想混合和匹配(你可能实际上不想这样做,除非你有一个非常好的理由想要一组特定的标志),你最好阅读文档并混合和匹配每个级别的标志手动启用。

我想我也会链接 this article来自 Gentoo Linux Wiki,它讨论了优化标志,因为它们与为操作系统构建软件包有关。显然,并非所有这些都适用,但它仍然包含一些有趣的信息——例如:

Compiling with -O3 is not a guaranteed way to improve performance, and in fact in many cases can slow down a system due to larger binaries and increased memory usage. -O3 is also known to break several packages. Therefore, using -O3 is not recommended.

根据那篇文章,在大多数情况下,-O2 与 -O3 “一样好”,并且在可执行输出损坏方面使用起来更安全。

关于c++ - GCC:-O3 和 -Os 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19689014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com