如何查看 gcc 优化选项?

Posted

技术标签:

【中文标题】如何查看 gcc 优化选项?【英文标题】:How to check out gcc optimization options? 【发布时间】:2018-09-22 21:56:27 【问题描述】:

我正在尝试找出关键的优化选项。首先,用

编译一个程序
gcc source.c -o test -O3 -Q -v

-Q -v 列出启用的标志(-faggressive-loop-optimizations -falign-labels -fasynchronous-unwind-tables 等)。那么如果直接将这些标志提供给 gcc 而不是 -O3,则生成的程序的性能是如果禁用了优化。

gcc 文档指出

并非所有优化都直接由标志控制

这可能是问题还是我错过了什么?

【问题讨论】:

【参考方案1】:

不,很可能您没有错过任何内容。这在这篇文章中有解释

How to get gcc -O1 optimization without specifying -O1

有些内部标志无法由用户控制,但可以由全局优化标志(如 -O1、-O2、-O3、-Os 或 -Ofast)激活。

您可以尝试通过首先指定 -O1 然后添加您的标志来“作弊”。但是仍然不能保证您会得到与首先执行 -O3 相同的效果。

短版 - 只是不要这样做。使用全局开关并根据需要打开/关闭单个标志。

【讨论】:

谢谢,这很有帮助。我在 Linux 和 Windows 上对矩阵乘法进行基准测试,并意识到在某些情况下 Linux 快了大约 5 倍。这在某种程度上与数组结构配置有关,也许是一些幸运的缓存对齐,但这是一个很好的事实。

以上是关于如何查看 gcc 优化选项?的主要内容,如果未能解决你的问题,请参考以下文章

查看控制编译优化的选项

如何查看CMake使用哪些gcc选项?

展开 gcc 编译器优化

如何在 GCC 中通过优化构建发布模式?

如何查看nginx的版本及配置选项?nginx都配置了哪些的模块?

如何获取 GCC 链接器命令?