2012-04-26 6 views
1

私はタイトループで実行すべきコード(.NET4 C#)を持っています。他のスレッドはこのループを使って非同期に情報をスレッドに送り、コマンドを処理します。コードは平均で十分に速い(100〜200マイクロ秒)が、約2秒ごとに約1回、通常約15msかかる。最悪の場合の実行時間のトレース

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

ストップウォッチなどを使用して独自のプロファイラを作成するオプションは常にありますが、これらのコードをすべて展開するのはむしろ面倒です。

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

答えて

0

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

あなたが試したプロファイラーに似たものがあるかどうかわかりませんが、YourKitsもまた別の一般的なプロファイラーです。このようなものがあればわかりません。

+0

私はそれが私の目的にはまったく適していないと思っていますが、誰も一ヶ月ほど良い提案をしていないので、これを答えとして受け入れます。 –

関連する問題