6

を使用して Perl アプリケーションをプロファイリングしていますperl -d:DProfdprofpp結果のファイルで実行すると、tmon.out次のような警告が表示されます。

Compress::Zlib::__ANON__ has 5 unstacked calls in outer
Compress::Zlib::AUTOLOAD has -5 unstacked calls in outer
  • アンスタックコールとは何ですか?
  • 「アウター」とは誰または何ですか?
  • 数字の意味は?負の数の呼び出しが存在する可能性はありますか?
  • 心配する必要がありますか?
4

1 に答える 1

9

これを試してみます:

  • スタックされていない呼び出しは、DProfがプロファイルを分析しているときに、スタック(プロファイル内)で予想よりも多くの(または少ない)呼び出しに遭遇したことを示します。これは、プロファイリングデータが正しくないことを意味します。
  • %outer「外部」とは、DProfの内部変数を指し、プロファイルを分析するときにスタックカウントを(明らかに)追跡します。
  • 数字は、DProfが検出すると予想した呼び出しの数と検出された呼び出しの数を示しています。5は予想よりも多くの呼び出しがあることを意味し、-5は5つ少ないことを意味します。繰り返しますが、これはプロファイルデータが破損しているためです。
  • これはDProf自体の実装のバグが原因であるため、コードの整合性について心配する必要はありません。DProfがtmon.outファイルの書き込み中に混乱したようです。dprofppただし、この不正確さのために、からの残りの結果は信頼できない可能性があります。したがって、これらの結果の精度について(少し)心配する必要があります。

Devel::NYTProfなどの代替プロファイリングモジュールを調べることをお勧めします

于 2008-12-16T16:59:52.063 に答える