我有一个小程序,使用 -O1
编译时性能比不进行优化要好得多。我有兴趣了解编译器所做的哪些优化导致了这种加速。
我想我要做的是获取 -O1
等效的优化标志列表(从手册页和 gcc -Q -v
中获取) >),然后在列表中进行选择以查看性能如何变化。
我发现,即使包括整个优化列表,仍然无法提供一个与 -O1 优化的程序一样好的程序。
换句话说
gcc -O0 -fcprop-registers -fdefer-pop -fforward-propagate -fguess-branch-probability \
-fif-conversion -fif-conversion2 -finline -fipa-pure-const -fipa-reference \
-fmerge-constants -fsplit-wide-types -ftoplevel-reorder -ftree-ccp -ftree-ch \
-ftree-copy-prop -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse \
-ftree-fre -ftree-sink -ftree-sra -ftree-ter myprogram.c
不等于
gcc -O1 myprogram.c
我使用的是 gcc 版本 4.5.3
-O1
执行的其他操作是否未包含在手册中与 -O1
相关的优化标志列表中?
最佳答案
如何使用 -S 选项来检查生成的汇编程序?
从同时使用“my_program.c”的两个实验来看,无论建议的算法有多长, -O0 选项都会禁用所有优化。
关于c - 选择相当于 -O1 的 gcc 优化标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769173/