我很難在相當複雜的算法中追蹤不必要的冗餘調用。使用DTrace檢測調用堆棧樹內的多餘函數調用
看起來像(我的一些)我的算法被一個非緩存和相對昂貴的函數的冗餘調用(在幾個子例程中)嚴重減慢。 爲了證實這一點,我想利用Dtrace檢測調用堆棧樹的給定分支內的單個函數的多個調用。
我希望能問的DTrace到:
給定函數中搜索調用堆棧樹(這裏
"foo();"
,見附件圖片)重複函數調用("c();"
,如)記錄它們各自的調用次數(此處爲3倍
"c();"
)
,如果可能,還
- 日誌每次出現時(
"foo()/a()/c()"
,"foo()/a()/b()/c()"
,"foo()/a()/b()/d()/c()"
)的調用堆棧。
這可能嗎?如果是的話,任何想法如何?
在此先感謝!
注:我用下,在我的示例代碼,即使我的代碼實際上是在Objective-C,但這種事情應該是一種語言無關的,不應該嗎?至少一般的方法/想法。