0

私が書いているプログラムのパフォーマンスを評価しようとしています。

私は方法を持っています:

public double FooBar(ClassA firstArg, EnumType secondArg)
{
    [...]

VS Performance Analyzer for FooBar で関数の詳細を確認すると、メソッドが合計時間 (含めて) の 14% を占め、その 10% がメソッド自体の本体に費やされていることがわかります。私が理解できないのは、合計時間 (包括的および排他的の両方) の 6.5% がこのメソッドの開き括弧で費やされているように見えることです。これは、実際にはコード内で最も時間のかかる行です (排他的な時間の問題として)。

このメソッドは、他のメソッドをオーバーライドしていません。プロファイリングはサンプリングを使用してデバッグ構成で行われ、実行は約 150 秒続き、その 6.5% は合計 48000 のうちの 3000 以上のサンプルに対応します。

誰かがこの行で何が起こっているのか、またその動作を改善する方法があるかどうかを説明できますか?

4

1 に答える 1

2

メソッドの最初の開き中括弧には、メソッドの初期化にかかった時間が示されています。

メソッドの初期化中に、ローカル変数が割り当てられて初期化されます。メソッドのすべてのローカル変数は、本体の途中で宣言されている場合も、実行前に初期化されることに注意してください。

初期化時間を短縮するには、ローカル変数をヒープに移動するか、たまにしか使用されない場合 (if 分岐内またはリターン後の変数など)、それらを使用するコードを別のメソッドに抽出します。

于 2013-02-04T14:04:15.163 に答える