【PHP】下らねぇ質問はここに書き込みやがれ 31
■ このスレッドは過去ログ倉庫に格納されています
0846nobodyさん
2006/11/04(土) 11:31:43ID:???まず第一の前提として、PHPのハッシュ(連想配列)というのは処理が遅いです。参照も遅いけど特に格納が。
そしてdefineというのは実態は$GLOBALSとは別のグローバル変数を保持してるに過ぎないということ。
そのため、よくある使い方としてC言語のように数十ものdefineを大量定義してるコードはかなり遅い。
しかもdefineの定義はプログラム先頭で全部まとめて行う人が多いため、このオーバーヘッドはバカにならない。
(グローバル変数を減らすよう努力する人は多いがdefineはむしろ増やしたがる傾向にある)
遅いと言ってもグローバル変数と同レベルで、それ以上には遅くも速くも無いです。
しかしC言語の感覚(Cでのdefineはプリプロセッサなので実行速度に影響せず極めて高速)では激遅と言えるでしょう。
APCのdefine_constantsとload_constansは、これを事前にメモリ展開が容易な構造で保存しておき、
必要時にキャッシュデータを丸ごと読み込んで高速にハッシュへ格納する、という仕組みのもの。
■ このスレッドは過去ログ倉庫に格納されています