人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。

関数やクラスなどを別ファイルにまとめています。
使う際はinclude等で読み込んで関数やクラスを使っておりますが、読み込まれた先のファイルは全てが読み込まれるという認識でよいのでしょうか?

たとえば読み込み先のファイルには関数10個、クラス10個が入っていて、実際に使用するのは関数2個とクラスが2個とします。
このときに処理にかかった時間が10秒とします。
もし読み込み先のファイルに使用する関数2個とクラス2個しかはいっていない場合は、処理時間に変化があったりするのでしょうか?

●質問者: quocard
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●50ポイント

(1)読み込まれた先のファイルは全てが読み込まれるという認識でよいのでしょうか?
はい

(2)処理時間に変化があったりするのでしょうか?
1.全て読み込まれてパースされますので、
インクルードに要する時間は増えます
2.インクルードによって消費メモリなどが増えることによって、
WEBサーバーのように並行して沢山起動するような場合には、
関数の動作時間に影響を与える可能性も少なからずあります
3.1ファイルのインクルードと複数ファイルのインクルードでは、
ファイルアクセスに要する時間が増えますが、
ファイルキャッシュが効けば非常に小さくできますので、
長大なクラスよりは、多少なりとも小分けしたほうが有効な場合もあります

phpでもパフォーマンスを気にすることは必要なことではありますが、
phpは簡単に使えるというのが売りのようなものですから、
あまり難しく考えるのではなく管理しやすさを優先して、
関連する関数はクラスにまとめるほうが良いでしょう
それと・・・2個と10個という個数ではなく、
1つの関数がどれだけ長大で複雑かという点で考えるようにしましょう

大量のアクセスが期待されるなど、パフォーマンスが優先するのであれば、
JAVAなどの採用を考えたほうが良いでしょう


quocardさんのコメント
ひじょうにわかりやすく回答いただきありがとうございます。 回答にございます読み込まれた先のファイルは全て読まれるということですが、これはinclude等で読み込んだ先にさらにincludeやrequireがあればさらにその先も読み込んでいき、読込先がなくなるまで全て読み込むということでよろしいのでしょうか? もし全て読み込むということであれば条件分岐(trueで読み込み)で読み込みの可否を判断するような仕組みのほうが読み込まれる量が調整できて良いという感じでしょうか。

うぃんどさんのコメント
>条件分岐(trueで読み込み)で読み込みの可否を判断するような仕組み それも一つの方法ですね requireは静的(一括)読み込みで、includeなら動的な読み込みになります requireは、パースに失敗した時点でコードの実行が中止されることとなり、 デバッグは比較的やりやすいです includeは、その時点では致命的なエラーとならないことも多く、 処理が進むうちにエラーが表面化して止まるなど、 デバッグを非常に難しくしてしまう場合がよくあり、 システムリリース後にバグとして発覚などもよく聞く話です・・・ 読み込みの可否を判断するという方法については否定も肯定もしませんが、 読み込まれる量の調整のためにデバッグを難しくするのではなく、 クラスに含む機能を適切に分けることを考えるなどしたほうが良いですし、 まずは製作・管理が楽なシステムを目指すのが良いとも思います どこを着地点にするかは・・・あなた次第です

2 ● 蝸牛角上争何事
●50ポイント

PHPのコードは実行される前にコードの解釈が行われますので実際にどの範囲を使っているかは速度に関係しません。

ただ遅いかどうかというのは動作環境に依存します。
コードキャッシュという機能があります。
コードの解釈を行った結果をメモリ上に蓄えておく機能で二回目以降の速度が格段に変わります。

PHP:eAccelerator で PHP 高速化 - Y-110’s Wiki


quocardさんのコメント
回答ありがとうございます。 まだまだ駆け出しで掘り下げた動作については疎いのでとても参考になります。 eAcceleratorについてはとても有用ですが、モジュールを追加できないサーバーでは使用が困難なことがありそうです。 とは言え中間キャッシュを利用してもらえるのはありがたいのでこちらも含めて参考にさせていただきます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ