現在、php フレームワークを作成しています。require
/include
またはrequire_once
/include_once
リクエスト中にファイルが多すぎると遅くなるかどうか疑問に思っていますか?
4 に答える
もちろんそうなるでしょう。何かを何度も行うと、速度が低下します。
ただし、より深刻な点として、ディスクに触れる IO 操作は、メモリ内で発生する操作に比べて非常に低速です。多くの場合、大規模なフレームワークを使用する場合、ファイルを含めることが主要なパフォーマンス要因になります (Zend Framework を見てください...)。
ただし、通常、APC や同様の op コード キャッシュなど、これを軽減する方法があります。
時にはプログラミングアプローチも取られます。たとえば、私の記憶が正しければ、Doctrine 1 にはすべてを 1 つの巨大なファイルにまとめて IO 呼び出しを少なくする機能があります。
疑わしい場合は、フレームワークで作成されたアプリケーションの詳細なプロファイリングを行い、include/require/etc が主要なスロー ポイントの 1 つになっているかどうかを確認してください。
はい、これによりアプリケーションが遅くなります。*_once
そのファイルが既に含まれているかどうかを確認する必要があるため、呼び出しは一般に高価です。インクルードが多いため、ハード ディスクへのアクセスが多く、メモリの使用量も多くなります。Zend Framework を使用して、要求ごとに合計 150 から 200 のファイルを含むアプリケーションを開発しました。全体的なパフォーマンスに与える影響を実際に確認できます。
含めるファイルが多いほど、負荷が大きくなります。ただし、require と require_once のどちらかを選択する必要がある場合、require_once / include_once はより多くの負荷がかかります。これは、同じファイルが別の場所に含まれているかどうかを確認するためにサーバーがチェックを行う必要があるためです。したがって、それを回避できれば、少なくともパフォーマンスを向上させることができます。
キャッシュ ライブラリを使用しない限り、リクエストが来るたびにそれらのファイルが何度も含まれてしまいます。確かにそれは物事を遅くするでしょう。include
必要なものだけを編集するフレームワークを作成しますinclude
。