最佳化程式碼

更新:2007 年 11 月

最佳化是對執行效能進行微調以達到最佳效能和最小程式碼大小的過程。Visual C++ 提供下列最佳化程式碼機制:

提升程式效能

如需良好程式設計方式提升程式效能之方式的詳細資訊,請參閱:

關於最佳化程式碼

由於最佳化會變更編譯器所建立的程式碼,因此最好在程式碼完整測試及偵錯之後,加以最佳化。這樣一來,您可偵錯相當符合原始程式碼的程式碼,而不必擔心最佳化的影響。一旦套用最佳化後,請即重新測試程式碼。有時,程式碼在套用了最佳化後會產生不同的執行結果。若發生這種情況,您可能必須偵錯最佳化的程式碼。如需詳細資訊,請參閱建立發行組建時的常見問題

經過最佳化的程式碼有時會產生不同的結果,這並非是因為錯誤,而是由於最佳化改變了計算的順序,導致因浮點精確度限制而有稍微不同的結果。

您可能也注意到,當您以最佳化編譯程式碼時,會出現某些額外的警告訊息。這是正常的行為,因為某些警告僅與最佳化的程式碼相關。若您能注意這些警告,就可避免大部分與最佳化相關聯的問題。

矛盾的是,為達速度要求的程式最佳化有時卻會降低程式碼的執行速度,因為某些速度最佳化作業會增加程式碼的大小。例如,內嵌 (Inline) 函式可排除函式呼叫 (Function Call) 的消耗,但是內嵌過多的程式碼可能會使程式過大,而增加虛擬記憶體的分頁錯誤數目。因此,排除函式呼叫所獲致的速度效能可能因記憶體交換而消失。基於此原因,最好在套用最佳化的前後,都能測量程式的效能。如需如何將應用程式最佳化的一般指引,請參閱最佳化最佳作法

最佳化 Pragma

如果程式碼的某個區段因最佳化而導致錯誤或拖慢速度,您可使用 optimize pragma 來關閉該區段的最佳化。請依下列方式將程式碼置於兩個 pragma 之間:

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

其他主題

如需其他最佳化主題的詳細資訊,請參閱:

如需在載入 DLL 方法時縮短時間的詳細資訊,請參閱 MSDN Library 網站上 "MSDN Magazine" 之 "Under the Hood" 專欄中的<最佳化 DLL 載入時間效能>(英文)。

如需將應用程式中之分頁最小化的詳細資訊,請參閱 MSDN Library 網站上 "MSDN Magazine" 之 "Bugslayer" 專欄中的<利用 Smooth Working Set Tool 提升執行階段效能>和<利用 Smooth Working Set Tool 提升執行階段效能 (第二部分)>(英文)。

請參閱

其他資源

C/C++ 建置參考