eAcceleratorとAPCのパフォーマンス比較
id:koyhogeさんからのリクエスト(^^;で、比較してみました。
実行したコードは、以前Sebastian Bergmann氏がコンパイラとコンパイラオプションの違いによるパフォーマンス比較を行った際に使った(と言っている)コードで、cvs.php.netにあります。
テストした環境は以下の通りです。
- CPU:Pentium4 3.0GHz/Mem:1GB
- CentOS4.4
- Apache 2.2.4(src)
- PHP 5.2.1(src)
- APC 3.0.14(extension)
- eAccelerator 0.9.5+5.2.1用パッチ(extension。zend_extensionではない)
- Apache再起動後、Firefoxから上記PHPコードを実行
今回の結果は次のような感じです。ちょっとグラフが見づらくてスミマセン。やはり「得手/不得手」があるみたいです。

以下、生データです。
| none | ea(optimize=0) | ea(optimize=1) | apc | |
|---|---|---|---|---|
| simple | 0.591 | 0.603 | 0.390 | 0.553 |
| simplecall | 1.475 | 1.675 | 1.417 | 1.467 |
| simpleucall | 2.600 | 2.709 | 2.106 | 2.293 |
| simpleudcall | 2.676 | 2.616 | 2.450 | 2.692 |
| mandel | 2.156 | 1.971 | 1.868 | 1.935 |
| mandel2 | 3.649 | 3.187 | 2.964 | 3.087 |
| ackermann(7) | 3.980 | 2.869 | 2.971 | 2.782 |
| ary(50000) | 0.147 | 0.145 | 0.144 | 0.143 |
| ary2(50000) | 0.133 | 0.132 | 0.129 | 0.128 |
| ary3(2000) | 1.113 | 1.132 | 1.133 | 1.082 |
| fibo(30) | 7.706 | 7.779 | 7.629 | 7.119 |
| hash1(50000) | 0.275 | 0.278 | 0.255 | 0.263 |
| hash2(500) | 0.268 | 0.289 | 0.257 | 0.274 |
| heapsort(20000) | 0.808 | 0.747 | 0.682 | 0.705 |
| matrix(20) | 0.562 | 0.554 | 0.518 | 0.533 |
| nestedloop(12) | 1.093 | 1.017 | 0.723 | 0.976 |
| sieve(30) | 0.776 | 0.651 | 0.638 | 0.627 |
| strcat(200000) | 0.107 | 0.116 | 0.111 | 0.109 |
| total | 30.118 | 28.471 | 26.385 | 26.769 |
今回の結果からすると、
eAccelerator(optimize=1)> APC > eAccelerator(optimize=0)> なし
な感じでしたが、「環境や実行するコードによって変わる」ということを押さえた上で何かの参考になれば ;-)