2017-05-07 51 views
1

我有一個循環,大約需要3分鐘的第一次迭代和周圍爲1毫秒,其餘99剖析在Visual Studio中環

我試圖找出是否有一種方式來獲得獨立分析每個循環的數據以及如何執行此操作。

我對分析很陌生,所以我可能會在這裏忽略一些明顯的東西。

我應該注意,我知道我的瓶頸在哪裏。我的2個功能佔用了運行時間的99.9%。我試圖弄清楚它是否全部在第一個循環中(因此可能是一些分配問題),或者在腳本的執行過程中「傳播」。

我在Windows 10使用Visual Studio 15(和它的綜合探查)

+0

您是否閱讀過[關於如何啓用逐行分析的頁面](https://msdn.microsoft.com/zh-cn/library/bb385757.aspx)和[關於查看結果]( https://msdn.microsoft.com/en-us/library/ms182372.aspx)?似乎您需要的所有數據都可以輕鬆訪問。你到底是什麼問題? ([這可以讓你一步一步地瀏覽和分析](https://www.hanselman.com/blog/HistoricalDebuggingProfilingNewDiagnosticToolsInVisualStudio2015.aspx)。) –

+0

謝謝你的鏈接。我知道哪部分代碼很慢。我試圖計算出減速是否是由於一些奇怪的內存分配的計算錯誤導致我可以修復它。 – dsat

+0

編譯器需要處於發佈模式,我提到的代碼才能工作(我之前忘了提及它)。 – AppWriter

回答

1
LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds; 
QueryPerformanceCounter(&StartingTime); 

//code to be profiled 

QueryPerformanceCounter(&EndingTime); 
ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart; 

int result[numLoops] 
result[0] = ElapsedMicroseconds.QuadPart; 

//use result in conjunction with a print function 

編譯器必須在釋放模式爲這個工作(在Visual Studio中至少)。

+0

當我嘗試編譯時,出現「沒有目標體系結構」錯誤。 引發錯誤的部分是這個'#elif!defined(RC_INVOKED)' 也許我應該提到它是一個控制檯應用程序(算法實現)。 – dsat

+1

如果其他人看到這個,你需要爲這段代碼編譯添加'#include #include '。 – dsat