我剛剛下載了ANTS Performance Profiler from Red Gate的試用版,並正在調查我的團隊的一些代碼。我立即注意到,有一段代碼表示ANTS報告的CPU時間高達99%。爲了性能分析目的,可以忽略對WaitHandle.SignalAndWait的調用嗎?
我完全不熟悉ANTS或一般的性能分析(也就是說,除了使用我所確信的極其粗糙和皺眉的方法(例如double timeToComplete = (endTime - startTime).TotalSeconds
)的自我分析外),所以我仍然在擺弄與應用程序並找出它如何使用。但我確實打電話給開發人員負責代碼,他的直接反應是「是的,這並不令我感到驚訝,但是該代碼調用了SignalAndWait [我可以看到自己,感謝ANTS],它不使用任何CPU,它只是坐在那裏等待一些事情。「他建議我簡單地忽略那些代碼,並尋找任何我能找到的東西。
我的問題:SignalAndWait是否需要無CPU開銷(如果是這樣,這怎麼可能?)是真的嗎?性能分析器認爲它佔用99%的CPU時間是否合理?我覺得這個特別好奇,因爲如果它達到99%,那就表明我們的應用程序經常是空閒的,不是嗎?然而,最近它的表現變得相當遲鈍。
就像我說過的,當談到這個工具時,我真的只是一個初學者,我對WaitHandle類一無所知。所以任何信息,以幫助我瞭解這裏發生了什麼,將不勝感激。