1

タイトループで実行する必要のあるコード(.NET4 C#)があります。他のスレッドは、このループを使用してスレッドに情報を非同期的に提供し、そのコマンドを処理します。コードは平均して十分に高速ですが(100〜200マイクロ秒)、約2秒に1回、さらに時間がかかります。通常は約15ミリ秒です。

これらのピークは平均をあまり変更しませんが、コードのどの部分で発生するかを調べたいと思います。平均は気にせず、最悪の場合の実行時間は気にしません。そのような情報を収集するためのツールはありますか?dotTraceを試しましたが、運が悪かったので、平均値を示しているだけなので、ほとんどの場合は無視したいと思います。

ストップウォッチなどを使用して独自のプロファイラーを作成するオプションは常にありますが、これらをコード全体にデプロイするのはかなり不器用です。

注:ビジーループでこれらのピークを引き起こすいくつかのコンテキストスイッチを期待する必要があることはわかっていますが、コードはこのアプリケーション専用の24コアサーバーで実行されます。したがって、どうにかしてそれらを最小限に抑えることができると思います。

4

1 に答える 1

0

ANTSも試しましたか?リンク: http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/ 表示される数値は、選択した地域の平均です。ただし、スタック トレースを選択すると、タイムラインのビューの上部に表示される緑色のバーが、そのスタック ビューが実行された場所を示します。それぞれをクリックして、スタックの実行ごとに数値 (タイミングなど) を表示できます。手動で比較するのに少し時間がかかりますが、可能です。

あなたが試したプロファイラーに似たものがあるかどうかはわかりませんが、YourKits も別の人気のあるプロファイラーです。

于 2012-05-07T12:38:09.777 に答える