4,160Geeklog-1.5.0からは$_CONF変数がデータベースに格納されるようになったが、その実装方法があまりきれいではないので、速度低下を招くのではないかと思い、ひろろんさんやdengenさんと共にごく簡単なキャッシュを実装していた。大ざっぱに言うと10%程度のスピードアップになりそう。そのとき話題になったのがlib-common.phpのダイエット。このファイルはGeeklogの基本機能を実装し、必要なライブラリをインクルードしているが、1.5.1で200KBほどある。このlib-common.phpの中でも比較的使用されていないコードやインクルードファイルがあれば、使用時にインクルードすることで、サイズを減らせる。WinCacheGrind]というページを見つけた。Windows用最新モジュール(php_xdebug-2.0.3-5.2.5.dll)をダウンロードしてPHPのエクステンション用ディレクトリにコピー。WinCacheGrindをダウンロードして、インストール。php.iniの書き換え。OnGeeklog-1.5.1のトップページにアクセスすると、lib-common.php処理にかかる時間は以下のようになった。XP+SP3、PHP-5.2.5、Apache-2.0.63、MySQL-4.0.18ntで、5回アクセスの平均値。キャッシュなしの方では、lib-common.phpの処理に合計で50.6ミリ秒かかり、そのうちlib-common.phpの読み込み自体に26.4ミリ秒かかっている。キャッシュありの方では、lib-common.phpの処理に合計で33.4ミリ秒かかり、そのうちlib-common.phpの読み込み自体に20.6ミリ秒かかっている。キャッシュありの方は、config->initConfig()の実行時間が大幅に短くなっている。config->loadBaseConfig()の時間は依然として長いが、これは内部でlib-database.phpをインクルードし、データベースに接続しているためで、短縮は難しそう。SEC_getUserGroups()に時間がかかるのはソースコードに注釈がある通り(lib-security.phpの88-90行目)だが、何らかのキャッシュ機能を実装できる可能性がある。なるとやはり、全体の50%から60%の時間を占めているlib-common.php自体の読み込みがボトルネックになる。詳しく調べてみるつもり。Geeklog記事のオプション友だちに記事をメールする印刷用ページトラックバックこのエントリのトラックバックURL:https://mystral-kk.net/trackback.php/20081004070324783この記事にはトラックバック・コメントがありません。以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。本ページのすべての商標と著作権はそれぞれの所有者に帰属します。