0

レガシー PHP7 アプリケーションのサポートとリワークを行っています。このアプリケーションはオートローディングを使用しません。代わりに、このアプリケーションではすべてのクラスを 1 つのファイルで要求し、すべてのディレクトリをクラスで巡回します。古いチームは、それが素晴らしい最適化方法だと考えていました。

だから私はBlackfireでいくつかのテストを行い、これを含むとCPUの半分の時間を消費する可能性があることがわかりました. 私は autoload で実験を行い、CPU 時間を 2 倍に、メモリ消費を 3 倍に減らしました。すばらしい結果です。

次に、オートロードを使用せずに古いコードで実験を続けたところ、場合によってはメガ インクルードが多くの時間を消費しないことがわかりました (そして、多くのループを含むフラット ファイルであり、if-else ステートメントはありません)。

blackfire パネルでは、これはインクルードを含むファイルに非常に顕著な数の呼び出し先があるように見えます。あるケースでは、このファイルには 21 の呼び出し先があり、132 ミリ秒で動作します。別のケースでは、6 つの呼び出し先で 2.63 ミリ秒です。

そして、私はそのような違いの理由を理解していません。私の推測では、PHP7 は非常にスマートで、実際にバイト コードでコンパイルする必要があるクラスとそうでないクラスを分析できます。

このような違いが存在する理由を誰かが知っていますか?

PS: ブラックファイア レポートを表示することはできません。PM はこれを許可していません。

4

1 に答える 1