サイトのメモリを最適化する際に、特定の目的のために多数のPHPクラスファイル(600以上)を含めると、メモリ消費量が急増することに気付きました。分解すると、PHPファイルを含める(したがって、おそらくオペコードにコンパイルする)と、ディスク上のファイルサイズの約50倍のメモリが必要になることに気付きました。
私の場合、ディスク上のファイルのサイズは合計で約800 kBです(インデントとコメント、純粋なクラス宣言、多くの文字列は含まれていません)が、すべてを含めた後、メモリ消費量は約40MB高くなりました。
私はこのように測定しました(PHP 5.3.6):
echo memory_get_usage(), "<br>\n";
include($file);
echo memory_get_usage(), "<br>\n";
600ファイルを超えるループ内で、メモリ消費量が基本的にゼロから40MBに増加するのを見ることができます。(追加のクラスをロードするオートローダー、またはすぐに実行されるグローバルコードやコンストラクターコードはありません。実際には純粋なインクルードのみです。)
これは正常な動作ですか?オペコードは純粋なソースコードよりもコンパクトだと思いました(すべてのスペースとコメントを削除するか、たとえば「foreach」文字列の代わりに1つまたは2つの命令バイトを使用するなど)。
これが正常な場合、それを最適化する方法はありますか?(オペコードキャッシュを使用すると、実際のメモリ消費量ではなく、コンパイル時間を節約できると思いますか?)