在我的课程项目中,我的项目设置为使用gcc的优化级别-O0(无优化),我们不允许在最终提交时更改它。
我使用-O2测试了我的代码,并且整个程序的速度提高了2倍。所以我想知道,是否有可能完成-O2所做的每个优化,并在我的代码中手动执行这些优化?或者是堆栈,框架,机器/程序集等内部的一些-O2优化,因此不允许程序员在我的源代码中手动进行这些优化(如果这样做有意义的话)
答案 0 :(得分:6)
是否可以完成-O2所做的每项优化,并在我的代码中手动执行这些优化?
没有。编译器执行的许多优化都不能用C表示。其中一些包括:
这并不是说编译器执行的所有优化都是不可翻译的 - 当然 - 只是其中一些是。
答案 1 :(得分:1)
是的,但这与在Minecraft中构建自己的8086级微处理器相同 - 不值得花时间和精力。是的,这些优化中的许多涉及低于抽象语言级别的东西。你的教授可能不知道你想要一个未被优化的可执行文件。