[PHP-users 11506] Re: APCとPHP Accelerator で速度テストしてみたんですが。

Masaaki Kikuzawa php-users@php.gr.jp
Thu, 14 Nov 2002 17:04:26 +0900


菊澤です。

On Thu, 14 Nov 2002 14:30:20 +0900
Youichi Iwakiri <yiwakiri@st.rim.or.jp> wrote:

> >CGI版PHP       >モジュール版PHP  >phpA           >APCmmap        >APCshm
> >1回目  6.340秒 >1回目  7.174秒   >1回目  7.177秒 >1回目  3.877秒 >1回目  4.143秒
> >2回目  6.319秒 >2回目  7.170秒   >2回目  1.555秒 >2回目  3.158秒 >2回目  3.459秒
> >3回目  6.318秒 >3回目  7.177秒   >3回目  1.549秒 >3回目  3.199秒 >3回目  3.441秒
> 
> phpAの1回目の時間は納得行くのですが、APCmmap&APCshmの値が
> ちょっと変じゃないですか?
> 
> コンパイルフェーズをバイパス(キャッシュ利用)出来ない場合は、
> 本来のコンパイラが呼ばれてから実行されるので、モジュール版PHPと
> 同程度+αの時間が掛かるはずなんですけど

たけさんの結果を見るとおもしろいですよね。
・phpAでは、
    最初の一回の実行がキャッシュなしと同等。
    二回目以降劇的に速くなる。
・APCでは、
    最初の一回の実行が二回目以降に較べると若干遅い。
    しかし、phpAのようにキャッシュなしと同等ほどに遅くない。

ちょっと考察してみます。

条件:
私の提示したスクリプトapc.phpを使っての結果と考える。
メインループでは、
for($i = 0; $i < 10; $i++) {
  include("apc.inc");
}
というように、なってます。

仮説:
APCでは、
  最初のincludeで、apc.incのPHPの中間コードキャッシュを作成する。
phpAでは、
  apc.php実行後に、apc.incのPHPの中間コードキャッシュを作成する。

仮説を基に考察:
APCでは、最初のループのincludeでapc.iniのキャッシュを作っているので、
残り9回分は、キャッシュから読むので速くなっている。
だから、apc.phpの1回目の実行が2回目以降に較べて若干遅くなる。
phpAでは、実行中には、apc.iniのキャッシュを作らず、実行後、キャッシュ
を作成する。だから、apc.phpの1回目の実行はキャッシュなしと同等に
なってしまう。

こんな感じでどうでしょうか?

--------------------------------------------
菊澤 正明 mailto:kikuzawa@coo-co-ltd.co.jp
(株)空 Coo co.,ltd. http://www.coo-cyber.com