2016-08-17 5 views
0

私は従来のPHP7アプリケーションをサポートし、再加工します。このアプリケーションでは、オートローディングを使用しません。このアプリケーションではなく、すべてのクラスを単一ファイルにする必要があります。古いチームはそれが素晴らしい最適化方法だと思った。blackfire.ioでPHP 7アプリケーションをプロファイリングすると、なぜ同じコードのCPU時間が違うのですか?

私はブラックファイアでいくつかのテストを行い、これを含むことがCPUの半分の時間を消費することが分かった。私は、自動ロードで実験を行い、CPU時間を2倍、メモリ消費を3倍に減らしました。素晴らしい結果。

私はオートロードなしで古いコードを使って実験を続けました。メガインクルードは多くの時間を消費しないことがわかっています(そして、たくさんのループを持つフラットファイルで、if-else文もありません)。

ブラックファイアパネルでは、これはインクルードを含むファイルが非常に区別された数の呼び出し先を持つように見えます。 1つのケースでは、このファイルは21個の呼出し音を有し、別の場合には6個の呼出し音および2.63msを処理する。

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

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

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

答えて

0

コードやレポートがなくても、推測するのは難しいです。しかし、私はこのページを見ていきます。あなたがレビューしているコードには、そこに説明されていることがあるかもしれません。

https://blackfire.io/docs/24-days/22-php-internals

関連する問題