我正在尝试找出关键的优化选项。首先,使用
gcc source.c -o test -O3 -Q -v
-Q -v列出启用的标志(-faggressive-loop-optimizations -falign-labels -fasynchronous-unwind-tables等)。然后,如果将这些标志直接提供给gcc而不是-O3,则结果程序的性能就是是否禁用了优化。
gcc文档指出
并非所有优化都直接由标记控制
这是问题还是我错过了其他事情?
答案 0 :(得分:0)
不,很可能您没有错过任何东西。这篇文章对此进行了解释
How to get gcc -O1 optimization without specifying -O1
有些内部标志不能由用户控制,而是由-O1,-O2,-O3,-Os或-Ofast等全局优化标志激活的。
您可以通过先指定-O1而不是添加标志来尝试“欺骗”。但是仍然不能保证您将获得与首先使用-O3相同的效果。
简短版本-只是不要这样做。使用全局开关并根据需要打开/关闭单个标志。