如何找出使用gcc时实际应用的优化?

时间:2013-02-06 19:40:11

标签: c++ gcc compilation g++ compiler-optimization

使用IBM的XL编译器系列,可以提供两个选项(-qreport-qlist)来为每个源文件生成报告,其中包含有关应用了哪些优化的信息,或者代码的哪些部分无法优化(以及为什么)。

是否有可能为GNU的g ++获得类似的报告 - 如果是,那该怎么办?

3 个答案:

答案 0 :(得分:12)

查看-fdump-tree-[switch]标志。您可以使用-fdump-tree-all来获取大量信息。

同样在主干gcc -fopt-info-[options]中,您可以访问更高级别的优化信息,例如当应用特定优化时,错过了例如

-fopt-info-inline-optimized-missed

打印所有成功和错过的内联优化(在这种情况下为stderr)。这显然是相当新的功能,所以我不确定它的支持程度如何。

在早期版本中,他们有-ftree-vectorizer-verbose=n,现在已弃用,以支持opt-info。

这里列出了所有这些选项https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html,虽然挑选有用的选项可能有点棘手。

答案 1 :(得分:6)

使用-S -fverbose-asm列出汇编器输出头中每个静默应用的选项(包括优化选项)。

答案 2 :(得分:0)

来自https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gcc/Optimize-Options.html#Optimize-Options

您可以使用Hey there, Come here 调用GCC,以找出在每个级别启用的确切优化集。

示例:(启用了优化选项的数量)不需要文件。

-Q --help=optimizers

请注意,many optimizations enabled by -O1/2/3 have no individual flags(另请参见:c++ - g++ O1 is not equal to O0 with all related optimization flags - Stack Overflow