什么是C++优化和整个程序优化视觉工作室

Gob*_*0st 11 c++ optimization visual-studio

基本上我想知道什么是c ++优化(/ O)和整个程序优化(/ GL).

会很感激深刻的解释.

C++ optimizatoin

整个程序优化

谢谢

Ker*_* SB 15

整个程序优化是跨模块优化的一个方面.由于这些语言的编译模型,这在C和C++的上下文中也称为链接时优化.

基本上,想象一下程序的整个源代码都粘贴到一个文件,源文件和头文件以及库文件中.在这个假设的情况下,编译器将有很多额外的优化机会:内联,死代码删除,重复数据删除等.

跨模块优化是指即使在C和C++编译器惯用的传统的一次一个TU编译中也试图允许这种优化的任何技术.通常,这涉及将额外信息(甚至可能是整个解析的源内容)添加到单个目标文件中,并允许链接器在看到应用程序的所有成分对象文件后执行某些编译任务.


Joh*_*ing 5

MSVC 是所谓的优化编译器。OC 使用您编写的代码并重写其中的一部分,以最大限度地减少内存占用、最大限度地提高执行速度,或两者兼而有之。他们通过利用代码运行平台的深厚技术知识来做到这一点,通常针对特定的指令集。

MSVC、GCC、LLVM 和许多其他 OC 都利用许多不同的技术来实现这一点。这些技术本身远远超出了互联网帖子中可以解释的范围,即使我都知道(我不知道)。但是有一些事情你应该记住。

经过优化的程序比未经过优化的程序更难调试。就程序中的执行顺序和局部性而言,许多代码可能已被移动,并且符号被剥离。

一般而言,该标准允许编译器对您的程序进行任何更改,只要您的程序的可观察行为与“ AS-IF ”相同且未进行任何更改。

多年来,负责优化代码的编译器部分是由非常聪明的人组成的专门团队设计和编写的。最终的结果是一个编译器,总的来说,它在优化代码方面比您希望的要好得多。通常,出于两个原因尝试实现自己的微优化是毫无意义的。第一,编译器通常可以做得更好;第二,您编写的微优化会使编译器无法实现自己的优化。通过手动微优化您的代码,您实际上可能会使您的程序性能更差