簡體   English   中英

分析編譯時間

[英]Profiling compilation time

我有一個 C++ 代碼,我正在使用 VC7 編譯它,構建它需要很多時間。 有什么方法可以分析它並找出構建它需要時間的原因嗎?

在 Visual Studio 2008 中,有一個用於打開構建計時的設置。 它可能也存在於 VC7 中......

Tools / Options / Projects and Solutions / VC++ Project Settings / Build Timing: Yes

這適用於不使用 MSBuild 的 C++ 項目(從 VS2008 開始)。 對於基於 MSBuild 的項目(例如 C#),您希望增加詳細程度:

Tools / Options / Projects and Solutions / Build and Run / MSBuild project build output verbosity

默認情況下,它設置為“最小”。

如果代碼是模板密集型的,那么您可以嘗試進行模板實例化分析。 Steven Watanabe 想出了分析器,如果我沒記錯的話,它應該可以與 VS 一起使用(不知道版本)。

源代碼在網絡上嗎? 這有時會大大減慢編譯速度。

最近,Microsoft 的C++ Build Insights SDK為其vcperf引入了一個選項/timetrace ,它允許您在任何基於鉻的瀏覽器中以火焰圖的形式分析您的構建並可視化特定組件的構建時間。

假設您已經下載並安裝了vcperf ,您需要:

  1. 通過執行啟動它的會話
vcperf /start SessionName
  1. 運行您的構建(事件由 vcperf 在系統范圍內捕獲)
  2. 停止會話
vcperf /stop SessionName /timetrace output.json

您現在可以運行基於鉻的瀏覽器,輸入<browser_name>://tracing ,(例如chrome://tracing )並加載output.json文件以進行可視化。

此處獲取的示例可視化

如果您的代碼大量使用模板,您可能會對Templight感興趣,這是由匈牙利研究團隊開發的用於調試和分析 C++ 模板元程序的工具(論文)。 看起來很有前途,但我不確定該工具是否可供下載...

我的猜測是很難從分析中獲得有用的結果。 您可以查看每個 .obj 文件的創建時間並檢查是否有任何文件特別慢,但我懷疑情況是否如此。

您是否瀏覽過編譯器選項(例如預編譯頭文件)以查看其提供了哪些改進? 同樣,關閉不需要的優化器可以顯着加快構建速度。 我的建議是花一些時間嘗試一些“假設”場景。

如果可能,您可以在您的情況下嘗試#include 所有 .cpp 文件到單個編譯單元中的技巧,只是為了檢查是否有很多文件和許多包含的開銷。

使用預編譯頭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM