4

私のアプリケーションには、複数のプロセスがあります。最初に、.pl ファイルを実行して 1 つの Perl プロセスを開始します。次に、さらに 2 つの .pl スクリプトを呼び出して、2 つの新しいプロセスを作成します。使用方法 このようなコードをプロファイルします。NYTProf を実行し、結果をマージして html で開きましたが、関数に関連するすべてのプロファイリング情報が欠落しています。この種のアプリケーションをプロファイリングするための情報は役に立ちますか?

4

2 に答える 2

5

ドキュメントのPROFILING セクションに例が示されています。

PERL5OPT=-d:NYTProf

これは、プロファイリングするスクリプトの実行に使用されている perl コマンド ラインを変更できない場合にも非常に便利です。通常、「addpid=1」オプションを有効にして、ネストされた perl の呼び出しがプロファイルを上書きしないようにする必要があります。

addpid オプションのドキュメントでは、次のように説明されています。

現在のプロセス ID をファイル名の末尾に追加します。これにより、同時または連続したプロセスが同じファイルを上書きすることを回避できます。プロファイリング中にフォークが検出された場合、子プロセスは自動的にプロセス ID をファイル名に追加します。

あなたは「結果をマージした」と言います。nytprofmergeを使用することを意味していると思います。これは、まったく同じソース コードで作成された複数の結果ファイルをマージする場合にのみ使用してください。たとえば、子プロセスを作成するために分岐したプロセス、または変更されていないスクリプトの複数回の実行によって。あなたの場合、異なるスクリプトからプロファイルを生成しているので、各プロファイル出力を使用して、マージせずに個別のレポートを生成する必要があります。

「関数に関連するすべてのプロファイリング情報が欠落している」とあなたは言います。その前に、コードのプロファイリングとレポートの生成について正確な情報が必要です。

于 2015-10-15T19:34:37.303 に答える