0

Equatecプロファイラーを使用して、アプリケーションの遅いプロセスを診断しています。どの方法が遅いかはわかりましたが、具体的には方法のどの部分が遅いのか知りたいです。メソッドを複数のメソッドに分割する以外に、Eqatec Profiler APIを使用して、メソッド全体とは別にプロファイリングするメソッドの特定のセクションをマークする方法はありますか?

4

2 に答える 2

1

Equatec は優れたプロファイラーですが、私の経験では、適切なサイズの .net アプリで何が起こるかを次に示します。

20% のようにかなりの割合でアクティブなルーチンを見つけることができ、その中に特定の「ホット」な行を見つけることさえあるかもしれませんが、それを見て、どうすればよいか分からないことがあります。あなたが知る限り、それは必要です。

同時に、1 つのルーチンに限定されていないため、プロファイラーでは実際にはうまく表示されない、コード内に潜んでいるそれよりも大きな何かが存在する可能性があります。

例を 1 つ挙げるとしたら、起動時間の約 50% をコール スタックの 20 ~ 30 レベルの深さまで費やしてリソースから文字列を取得するアプリを見てきました。とても時間がかかります。それを行う別の方法が見つかれば、2 倍の速さで起動できます。ANTS プロファイラー (別の優れたプロファイラー) は、何が起こっているのかについての手がかりを与えませんでした。

どうやって見つけたの?昔ながらの方法は、ここで行われたのと同じ方法で、ここで説明されています

次のグラフは、プログラムを一時停止してスタックを N 回手動でサンプリングした場合、そのうちの2 つのサンプルで、はるかに高速なものに置き換えることができる何かを実行していること、節約できると期待できる時間、および対応するスピードアップ比。

たとえば、赤い曲線 (2/5) は、5 つのスタック サンプルを取得し、そのうちの 2 つの改善点を確認した場合、どれだけ節約できるか正確にはわからないことを意味します。ただし、最も可能性の高い値は 2/5 (40%、スピードアップ 67%) で、平均は 3/7 (43%、スピードアップ 75%) で、およそ 10% (スピードアップ 11%) の範囲のどこかになります。 ) および 70% (スピードアップ 3.33x)。これは、少数のサンプルを信頼できないと考えている場合に備えています。悪いギャンブルではありません。より確実性が必要な場合は、より多くのサンプルを取得してください。

合計 N 個のサンプルのうち S 個のサンプルで何かを見るためのコストのベータ分布。

(ベータ分布 とスピードアップのプロットX ~ Be( number of hits + 1, number of misses + 1 )= 1/(1-X))

于 2012-03-12T19:47:19.903 に答える
0

現在のバージョン 3.8.14: いいえ、それはできません。これは素晴らしい改良ですが、EQATEC の当面のロードマップにはありません。

于 2012-03-19T00:08:26.157 に答える