使用IBM的XL编译器系列,可以提供两个选项(-qreport
和-qlist
)来为每个源文件生成报告,其中包含有关应用了哪些优化的信息,或者代码的哪些部分无法优化(以及为什么)。
是否有可能为GNU的g ++获得类似的报告 - 如果是,那该怎么办?
答案 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)