2010-05-24 33 views
1

我有一個性能問題,我懷疑一個標準的C庫函數耗時過長,導致我的整個系統(進程套件)基本上出現「呃逆」。果然,如果我評論圖書館的功能調用,打嗝就會消失。這促使我調查了什麼標準方法來證明這種類型的東西?測試函數以查看它是否會導致整個系統掛起一秒(導致其他進程暫時餓死),最佳做法是什麼?C++漸近分析

我至少希望將被調用的函數和可見的凍結關聯起來。

感謝

+0

這聽起來不像是與漸近複雜性有關。如果您告訴我們它是哪個功能,它也可能有所幫助。 – 2010-05-24 22:02:00

回答

0

,以確定這些東西的最佳方式是使用分析工具,以獲取有關如何長每個函數調用花費的信息。

未能設置保留內存塊的功能。然後在你的代碼中寫入一個字符串到內存中,包括當前時間。 (這可以避免與寫入顯示器相關的延遲)。 運行完代碼後,請拔出內存並對其進行解析,以確定代碼的部分時間長短。

0

我試圖找出你的意思是「打嗝」。我想象你的程序做這樣的事情:

while (...){ 
    // 1. do some computing and/or file I/O 
    // 2. print something to the console or move something on the screen 
} 

,通常印刷或圖形輸出在主觀上連續的方式一起哼唱,但有時它似乎凍結,而計算部分需要更長的時間。

這是你的意思嗎?

如果是這樣,我懷疑它是最總是在步驟2中運行狀態,但在打嗝狀態在步驟花費時間1

我會註釋掉第2步,所以它會花費幾乎所有的現在是在打嗝狀態,然後只是pause it under the debugger看看它在做什麼。 該技術非常輕鬆地告訴你問題是什麼。