优化代码

更新:2007 年 11 月

优化是调整可执行文件的性能以获得最佳性能和最小代码大小的过程。Visual C++ 提供了下列优化代码的机制:

提高程序性能

有关好的编程做法可以如何提高程序性能的详细信息,请参见:

关于优化代码

鉴于优化可以更改编译器创建的代码,最好在完全测试和调试了代码后优化代码。那样,可以调试最接近地匹配源代码的代码并且不用担心优化效果。应用优化后,应重新测试代码。有时,应用了优化后代码的行为会有不同。这种情况下,可能需要调试优化的代码。有关更多信息,请参见创建发布版本时遇到的常见问题

优化过的代码有时给出不同的应答,不是因为错误,而是因为优化更改了计算顺序,从而导致结果因浮点数精度的限制而稍微不同。

当用优化的方式编译代码时,可能还会注意到一些附加的警告消息。这是正常行为,因为一些警告只与优化代码有关。如果对这些警告多加留意,则可以避免与优化有关的大多数问题。

矛盾的是,由于一些速度优化会增加代码大小,为提高速度而对程序进行的优化有时反而会导致代码运行速度减慢。例如,内联函数可消除函数调用的系统开销,但是内联太多代码可能使应用程序很大,致使虚拟内存页的错误数增加。因此,通过消除函数调用获得的速度可能都丢在了内存交调中。为此,在应用优化前后最好测量程序的性能。有关如何以最佳方式优化应用程序的一般指南,请参见 优化最佳做法

优化杂注

如果某个代码节由于优化导致错误或者速度减慢,可以使用 optimize 杂注对该代码节关闭优化。用两个杂注将代码括起来,如下所示:

#pragma optimize("", off)
// some code here 
#pragma optimize("", on)

其他主题

有关优化的其他主题,请参见:

有关缩短 DLL 方法加载时间的更多信息,请参见 MSDN Library 中“MSDN Magazine”(MSDN 开发精选杂志)中“Under the Hood”(深入实质)专栏下的文章“Optimizing DLL Load Time Performance”(优化 DLL 加载时间性能)。

有关在应用程序中最大程度减少分页的更多信息,请参见 MSDN Library 中“MSDN Magazine”(MSDN 开发精选杂志)中“Bugslayer”专栏上的文章“Improving Runtime Performance with the Smooth Working Set Tool”(使用 Smooth 工作集工具提高运行库性能)和“Improving Runtime Performance with the Smooth Working Set Tool—Part 2”(使用 Smooth 工作集工具提高运行库性能(第 2 部分))。

请参见

其他资源

C/C++ 生成参考