2013-03-01 74 views
2

我正在嘗試做一個相當大的項目的儀表分析(在整個解決方案中大約有40,000個源文件,但在剖析下的項目大約有200個源文件),編寫在C++中。Visual Studio Profiler使用大量的內存

每次運行性能分析時,它都會創建一個大約34GB的大型報告,然後,當它要分析它時,它會嘗試(我認爲)將整個文件加載到RAM中。

顯然,它使計算機無法使用,我必須在分析儀完成之前停止分析儀。

有什麼建議嗎?

+2

我不完全確定你希望我們告訴你什麼 - 除了「去你的老闆,並要求一臺64或128GB內存的計算機... – 2013-03-01 17:23:09

+1

假設你沒有使用意大利麪代碼,你應該考慮將代碼庫分解爲模塊/靜態或動態庫,然後你可以在每個組件上進行性能分析而不用浪費太多內存。 – 2013-03-01 17:36:57

+1

對不起,以錯誤的方式提問 這裏的問題不是如何載入這麼大的報告,是關於如何不創建它,我不知道爲什麼這麼大。被分析的項目非常小,它有100-200個文件,編譯的可執行文件大約是10Mb(AFAIR).. – Jamby 2013-03-01 21:47:35

回答

0

有一個在VS中的錯誤,原因是大部分的分析工作是在UI做的線程它使VS無法使用,如http://channel9.msdn.com/Forums/TechOff/260091-Visual-Studio-Performance-Analysis-in-10-minutes

提到你可以給嘗試VS 2012,看看問題已經解決了,但毫無疑問,加載34 GB文件不是一件簡單的任務,它也是導致系統無法使用的原因,因此,John在評論部分中提出了以上建議,將代碼拆分爲較小的組件,然後進行分析,希望它有幫助!

1

這是分析大型或「密集」程序時的一般問題。您需要限制分析器僅從您的代碼庫的某些單元收集數據。在Microsoft的配置文件中,這是通過在命令行或IDE中使用Include/Exclude開關完成的。

5

嗨,希望這個迴應不算太晚。這是Visual Studio Profiler團隊的Andre Hamilton。分析這麼大的報表文件確實需要一些時間。由於您的所有功能都被檢測到,因此儀表可生成大量數據。通過使用一些函數或特定的二進制文件,如果您不介意通過命令行進行分析,您可能會加快速度。這將生成一個vsp文件,然後您可以在VS中打開並正常使用。假設你的項目需要運行n個二進制文件。讓我們假設這些二進制文件,有興趣的二進制妮

的表現打開一個VisualStudio的命令提示符 1)不要vsinstr ni.dll儀器整個二進制或使用/ include或/排除vsinstr的選項進一步限制哪些功能是插裝的。 NB如果你的二進制文件上簽字,則需要插裝

2後辭職)通過給定的命令 vsperf /start:trace /output:myinstrumentedtrace.vsp

3)啓動儀器儀表模式分析器啓動應用程序

4)當你準備停止剖析 vsperf /shutdown

希望這有助於

(請注意,我假設你有一個許可VS的副本收集和分析數據)。

+0

請注意,VSPerf需要Windows 8或更高版本。 – 2015-09-24 11:35:41