使用__gnu_mcount_nc 擷取函數退出時間
嘗試在嵌入式平台上執行效能分析,實作一個僅堆疊的函數函數條目的幀和當前週期計數產生了有關呼叫者/被呼叫者圖和常用函數的有用見解。然而,缺乏對函數退出時間的可見性對捕獲函數體內花費的完整時間構成了挑戰。
GNU 分析工具方法
與上述相反在實現過程中,GNU 分析工具(例如 gprof)透過利用堆疊採樣克服了這一限制。 gprof 不依賴函數進入和退出時間,而是透過計算每個函數中的 PC 樣本來測量每個函數的自時間。然後,根據函數到函數的呼叫計數,將該自時間分配給呼叫者。
堆疊取樣的優點
與PC 取樣相比,堆疊取樣提供幾個優點:
效率: 捕捉堆疊樣本比 PC 樣本更昂貴,但準確分析所需的樣本較少。
魯棒性:
堆疊採樣不受遞歸影響,並且在多執行緒/多核心中有效工作呼叫圖和熱點的替代方案雖然呼叫圖和熱點可以提供一些見解,但它們可能不會暴露隱藏的內容效能問題。為了進行有效的分析,建議檢查隨機原始堆疊樣本,以識別導致過多時間消耗的函數以及呼叫它們的原因。這種方法可以更深入地了解程式碼結構和潛在的最佳化領域。以上是我們如何準確捕捉函數退出時間以進行嵌入式系統效能分析?的詳細內容。更多資訊請關注PHP中文網其他相關文章!