PHPで解析時間を測定する方法はありますか?
-
07-07-2019 - |
質問
ランタイムベンチマークによるPHPコードの最適化は簡単です。コードブロックの周りのmicrotime()を介して$ startおよび$ endの時間を追跡します-microtime()の使用に関連する答えを探していません。
私がやりたいのは、PHPがコードを実行する準備を整えるのにかかる時間を測定することです(コード解析/操作コードツリー構築時間)。私の推論では、サイトにあるすべてのページに必要な可能性があるすべてのクラスを含める()のは簡単ですが、CPUのオーバーヘッドは「無料」にはなりません。 「高価な」方法を知りたい解析時間は本当にです。
APCなどのオペコードキャッシュはシナリオの の一部ではないと想定しています。
PHPでの解析時間の測定はmod_phpで行わなければならないことは正しいですか?
編集:可能であれば、コードでの $ _ SERVER ['DOCUMENT_ROOT']
の使用を考慮すると役立ちます。コマンドソリューションでは、これを行うのに少し手を加える必要があります(ただし、貴重な答えです)。
解決
はい。あります。
<?php return; rest of the code ?>
または
<?php whole code; $%^parse erorr!@! ?>
そして空のスクリプトの実行時間を比較します
time php empty.php
上記の追加機能を使用して、通常のスクリプトの実行(または失敗)にかかる時間:
time php test.php
このメソッドを大きなファイルで使用し、Core2Duo 2.4GhzでPHP5.3は1秒あたり1.5〜4.5MBのPHPコードを解析できます(もちろん、コードの複雑さに大きく依存します)。
他のヒント
求めている詳細な分析レベルについては、Xdebug( http://xdebug.org/ )は、コードをセグメントに分割する必要がない最大の情報を提供します。
1つの方法は、コマンドラインからスクリプトの実行のタイミングを計ることです。
たとえばLinuxの場合:
$ time php5 -r 'echo "Hello world";'
Hello world
real 0m1.565s
user 0m0.036s
sys 0m0.024s
それはまったく役に立ちますか?おそらく、異なるスクリプト間の相対的な時間を発見するのに役立ちますが、Apacheモジュールの所要時間を示すものではない可能性があります