4

nytprofhtmlによって生成されたDevel::NYTProfレポートについて完全に混乱しています。古いバージョンの NYTProf 1.90 を使用しています。私はそれが非常に古いバージョンであることを知っていますが、いくつかの理由でそれを使用する必要があります.

したがって、これらの HTML レポートは次のようになります (特定の *.pl ファイル レポートを見ると):

|Line|Stmts.|   Time   |  Avg. |Code|
|42  | 6804 | 0.04506  | 7e-06 | }; |

新しいバージョンの nytprofhtml からのレポートを見たことがないので、同じように見えるかどうかはわかりません。

私の場合、この行はプログラム全体で最も遅い部分です(小さなプログラムではありません)。だから私の質問は、この「};」のようなステートメントをどのように使用できるかです。より複雑なステートメントを含むプログラムの中で最も遅い部分になります。NYTProf の報告を誤解していると思います。

私の質問がわかりにくい場合は、これらのレポートの各列の定義を教えてください。これは役に立ちますか? これは大いに役立ちます。

特に何に興味がありStmtsます。平均。私は推測していますが、推測したくありません!

前もって感謝します。

4

1 に答える 1

8

Stmts.ステートメントが実行された回数、またはより正確には、その行に関連付けられたステートメント (常に正確であるとは限りません) から、次に実行されたステートメントに実行が移動した回数です。

Timeその行に関連付けられたステートメントの実行に費やされた時間の合計です。

Avg.は単純TimeStmts.

現在の Devel::NYTProf ドキュメントからのこれらの抜粋が役立つ場合があります。

ステートメント プロファイラーは、1 つの perl ステートメントを入力してから次のステートメントを入力するまでの時間を測定します。実行が新しいステートメントに到達するたびに、前のステートメントに入ってからの時間が計算され、前のステートメントが開始するソース ファイルの行に関連付けられた時間が追加されます。[...]

たとえば、次のようになります。

while (<>) {
    ...
    1;
}

最初のループの後、条件の評価 (この例では入力の待機) に費やされた時間は、ループで実行された最後のステートメントに費やされたものとして記録されます。

多くの NYTProf の最近のバージョンでは、適切な内部ループ オペコードをインターセプトすることにより、この状況でより正確なタイミングを提供しさらにその他の多くの重要な改善が行われています。

于 2014-01-14T16:36:15.503 に答える