Red Gate から ANTS Performance Profilerの試用版をダウンロードし、チームのコードの一部を調査しています。すぐに、ANTS が最大 99% の CPU 時間を消費していると報告しているコードの特定のセクションがあることに気付きました。
私はANTSや一般的なパフォーマンスプロファイリングに完全に慣れていません(つまり、 のような非常に粗雑で眉をひそめている方法であると確信しているものを使用した自己プロファイリングは別としてdouble timeToComplete = (endTime - startTime).TotalSeconds
)、まだアプリケーションをいじって考えていますそれがどのように使用されているかを示します。しかし、問題のコードの責任者である開発者に電話をかけたところ、彼の反応はすぐに次のようになりました。は CPU をまったく使用せず、何かが行われるのを待っているだけです。」彼は、単にそのコードを無視して、他に見つけられるものを探すようにアドバイスしてくれました。
私の質問: SignalAndWait が CPU オーバーヘッドを必要としないというのは本当ですか (もしそうなら、これはどのように可能でしょうか?)、そしてパフォーマンス プロファイラーがそれを 99% の CPU 時間を占有していると見なすのは合理的ですか? これが特に興味深いのは、99% の場合、アプリケーションが頻繁にアイドル状態になっていることを示しているからです。それでも、最近はそのパフォーマンスがかなり鈍くなっています。
私が言ったように、私はこのツールに関しては本当に初心者であり、WaitHandle クラスについては何も知りません。したがって、ここで何が起こっているのかを理解するのに役立つ情報があれば幸いです。