問題タブ [devel-nytprof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - コードに診断がないのに、Perlがdiagnostics.pmをコンパイルするのはなぜですか?
CGIプログラムのDevel::NYTProf v4の出力を見ていたとき、レポートのソースコードファイルに出くわしました—排他的な時間と名前の順に並べられています。diagnostics.pm
最初は、なぜそれが本番コードに含まれるのか理解できませんでした。レポートを詳しく調べてみると、によって呼び出されていることがわかりましたmain::BEGIN@17
。これは、次の行です。
したがって、これが原因のようです。回線を削除するno diagnostics
と、通話が切れ、実質的に約300ミリ秒の時間を節約できました。
perldocuse
no
がキーワードについて言っていることは次のとおりです。
使用によってインポートされた意味をインポート解除する対応するno宣言があります。つまり、インポートの代わりにunimportModuleLISTを呼び出します。インポートがVERSIONの場合と同じように動作するか、リストが省略または空であるか、インポートされていないメソッドが見つかりません。
だからここに私の実際の質問があります:私が呼び出すとno diagnostics
、それがunimport
編集される前に実際にロードされると仮定して正しいですか?
の呼び出しはno diagnostics
このコードに似ていますか?
結果として、インポートされたことのないものを単にアンインポートするのは悪い考えですか?それは実際に最初にロードされるからです。
perl - fork/exec するプログラムで Devel::NYTProf を使用する
まずexport PERL5OPT=-d:NYTProf
、デバッグ オプションが子プロセスに継承されるように、コマンド ラインから実行します。次に、連絡先の Perl プログラムを起動します。フォークしてデーモン プロセスになり、別の Perl プログラムtable_managerの 9 つのインスタンスをフォーク/実行します。(exec は のようになりexec /path/to/perl /path/to/table_manager
ます。) この時点で、nytprof.out という 10 個または 11 個の新しいファイルが表示されます。んんん。予想どおり、今までフォークされたプロセスごとに 1 つ。
クライアントは、contactd which fork/ execs slaveに接続します。スレーブは、9 つのテーブル マネージャーに接続し、クライアントからの要求を受け入れて、9 つのテーブル マネージャーに渡します。
通常のクライアント接続を実行した後、すべてのサーバー プロセスをシャットダウンしました。nytprofmergeを実行して、さまざまな nytprof.out をマージします。nnnnファイルをnytprof-merged.outにコピーしてから実行しnytprofhtml -f nytprof-merged.out --open
ます。
HTML レポートが開いたとき、連絡先以外は何も言及されていません。最上位のサブルーチンは、ほとんどが BEGIN ブロック、import、AUTOLOAD ... 初期実行のものです。
これにより、NYTPROFは(複数の nytprof.out ファイルに基づいて) フォークを通過しているが、何らかの理由で実行された Perl プログラムのプロファイルを継続していないと思います。
MacOSX 10.8.2 で perl 5.16.1 と最新の Devel::NYTProf を実行しています。
私がしていないことに関する提案はありますか?
perl - タイムアウトする Perl CGI スクリプトのプロファイリング
Perl CGI アプリケーションがタイムアウトすることがあり、Apache によって強制終了され、504 Gateway Time-out
エラーがブラウザに送信されます。NYTProf を使用してこのアプリケーションのプロファイルを作成しようとしていますが、プロファイル データを読み取ることができません。
sigexit=1
NYTProf オプションを使用しています。問題を再現する最小限の CGI スクリプトを次に示します。
perl - NYTProf html レポートの読み方
nytprofhtmlによって生成されたDevel::NYTProfレポートについて完全に混乱しています。古いバージョンの NYTProf 1.90 を使用しています。私はそれが非常に古いバージョンであることを知っていますが、いくつかの理由でそれを使用する必要があります.
したがって、これらの HTML レポートは次のようになります (特定の *.pl ファイル レポートを見ると):
新しいバージョンの nytprofhtml からのレポートを見たことがないので、同じように見えるかどうかはわかりません。
私の場合、この行はプログラム全体で最も遅い部分です(小さなプログラムではありません)。だから私の質問は、この「};」のようなステートメントをどのように使用できるかです。より複雑なステートメントを含むプログラムの中で最も遅い部分になります。NYTProf の報告を誤解していると思います。
私の質問がわかりにくい場合は、これらのレポートの各列の定義を教えてください。これは役に立ちますか? これは大いに役立ちます。
特に何に興味がありStmts
ます。平均。私は推測していますが、推測したくありません!
前もって感謝します。
perl - プロファイリング時とプロファイリングなしの場合の NYTProf 実行時間
ただ、確認したかっただけです。
プログラムの実行時間を測定する小さなpythonスクリプトがあります。外部プログラムが開始する前に時間を節約し、プログラムの実行が終了した後の時間からこの値を差し引きます。
このスクリプトを perl スクリプトで実行すると、実行時間が 0.49263 になり、同じスクリプトを NYTProf で実行して nytprofhtml で生成された HTML レポートを調べると、実行時間が 0.80784 で、ほぼ 2 倍になっていることがわかります。
これでよろしいですか?プロファイリングは実行時間を増やすべきだと思いますが、それだけですか?
perl - perlスクリプトが埋め込まれたクラシックaspでNYTprofを実行する
perl スクリプトを実行する asp スクリプトをプロファイリングする必要があります。perlスクリプトを使用してクラシックaspでNYTprofを実行する方法はありますか?
上記はサンプルコードです(完全ではありません)
どんな助けでも大歓迎です。
ありがとう。
perl - perl での IIS Web サイトのプロファイリング
IIS で作業しなければならない Web サイトを Perl でプロファイリングしようとしています。ウェブサイトはを使用していCatalyst
ます。私はDevel::NYTProf
それをプロファイリングするために使用しています。
デフォルトでは、プロファイル ファイルは に書き込まれ./nytprof.out
ます。perl の起動や引数の受け渡しに使用するコマンド ラインにアクセスできません ( use Devel::NYTProf
perl ファイルでプロファイリングを有効にするために使用します)。
しかし、ファイルが見つかりません… どこにあるかわかりますか? NYTProf で自分の Web サイトをより適切にプロファイリングするにはどうすればよいですか?
perl - nytprof perl プロファイラーの実行時に「forkdepth」の値が「-2」のエラー メッセージが表示される
ただし、変数 NYTPROF を「forkdepth:1」に設定しました。フォークされた子のプロファイラー出力とその親を nytprofmerge しようとすると、次のようなメッセージが表示されます。
nytprof.13232.out.21321 の読み取りオプション「forkdepth」には、前の値「-1」とは異なる nytprof.13232.out.21321 の値「-2」があります。これはプロファイルに一貫性がないことを意味し、結果としてガベージが発生します。
誰かが修正を知っていますか、またはなぜこれが起こっているのですか?
perl - 複数のプロセスがある場合の NYTProf の使用方法
私のアプリケーションには、複数のプロセスがあります。最初に、.pl ファイルを実行して 1 つの Perl プロセスを開始します。次に、さらに 2 つの .pl スクリプトを呼び出して、2 つの新しいプロセスを作成します。使用方法 このようなコードをプロファイルします。NYTProf を実行し、結果をマージして html で開きましたが、関数に関連するすべてのプロファイリング情報が欠落しています。この種のアプリケーションをプロファイリングするための情報は役に立ちますか?