タイトループで実行する必要のあるコード(.NET4 C#)があります。他のスレッドは、このループを使用してスレッドに情報を非同期的に提供し、そのコマンドを処理します。コードは平均して十分に高速ですが(100〜200マイクロ秒)、約2秒に1回、さらに時間がかかります。通常は約15ミリ秒です。
これらのピークは平均をあまり変更しませんが、コードのどの部分で発生するかを調べたいと思います。平均は気にせず、最悪の場合の実行時間は気にしません。そのような情報を収集するためのツールはありますか?dotTraceを試しましたが、運が悪かったので、平均値を示しているだけなので、ほとんどの場合は無視したいと思います。
ストップウォッチなどを使用して独自のプロファイラーを作成するオプションは常にありますが、これらをコード全体にデプロイするのはかなり不器用です。
注:ビジーループでこれらのピークを引き起こすいくつかのコンテキストスイッチを期待する必要があることはわかっていますが、コードはこのアプリケーション専用の24コアサーバーで実行されます。したがって、どうにかしてそれらを最小限に抑えることができると思います。