选项的名称说明了一些事情,但是 Visual Studio/编译器到底做了什么以及真正的后果是什么?
编辑:如果你搜索谷歌你可以找到这个地址,但这并不是我真正想要的。我想知道真实发生的事情。例如为什么循环的时间更少等等。
如果没有优化,编译器会生成非常愚蠢的代码 - 每个命令都以非常简单的方式编译,以便它执行预期的操作。调试版本默认禁用优化,因为如果没有优化,生成的可执行文件会以直接的方式与源代码匹配。
变量保存在寄存器中
打开优化后,编译器会应用许多不同的技术来使代码运行得更快,同时仍然执行相同的操作。 Visual C++ 中优化和未优化构建之间最明显的区别是,在优化构建中,变量值尽可能长时间地保存在寄存器中,而在没有优化的情况下,它们始终存储在内存中。这不仅影响代码速度,还会影响调试。由于此优化,调试器在您单步执行代码时无法可靠地获取变量值。
其他优化
编译器还应用了多种其他优化,如中所述/O 选项(优化代码)MSDN 文档。有关各种优化技术的一般描述,请参见维基百科编译器优化文章.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)