2010年12月4日土曜日

eAcceleratorはAPCより速いのか


eAcceleratorはAPCより速いのか


PHPはプログラムを実行前に中間形式にコンパイルし実行します。



この作業はプログラムが呼び出される度に行われるので多くのファイルのIncludeしているプログラムやいわゆる重たいプログラムなどには非常にコストの高い作業になります。



今回紹介するAPCやeAcceleratorは中間形式にコンパイルする作業をキャッシュし保持します。そのため、呼び出される度にコンパイル作業を大幅に高速化する事ができます。



これらのキャッシュ機能を提供するのがAPCとeAcceleratorです。



APCとeAcceleratorの違い


APCとeAcceleratorは殆ど同じ動作をしますがeAcceleratorの方がやや機能が上回っています。


eAcceleratorの機能


  1. キャッシュ圧縮(圧縮レベル調整可能)

  2. 共有メモリキャッシュ、ディスクキャッシュの選択




前回書いたさくらVPSで一日6万PVを処理するためにしたことで書いた後にコメントでもいただいたのですがeAcceleratorの方が速いという噂をよく聞きます。



ベンチマーク方法



  • OS:CentOS 64bit

  • メモリ:512M

  • CPU:2992.510Mhz

  • APC:3.1.6

  • eAccelerator:0.9.6.1

  • アプリケーション:ApacheBench

  • スレッド数:100

  • リクエスト数:1000

  • 対象サイト: PukiWiki 1.4.7_notb (デフォルト設定)

  • ページ:index.php 

  • PHP:モジュールモード


正確なキャッシング能力を測るために10回実行してから、計測しました。


必ずローカル環境で試してください



ベンチマーク結果


アクセレーターなし















アクセレーターなし(ms)
1回目13003
2回目16107
3回目13787
4回目14540
5回目12691
6回目12253
7回目12452
8回目10731
9回目12714
10回目12718
平均13099.6
Failed requests合計12回

APC















アクセレーターAPC(ms)
1回目1086
2回目1019
3回目1027
4回目1018
5回目1031
6回目1016
7回目1029
8回目1015
9回目1016
10回目1021
平均1027.8
Failed requests合計0回

eAccelerator


















アクセレーターeAccelerator(ms)
キャッシュ方式ディスク&メモリ
圧縮有効
1回目1051
2回目1034
3回目1054
4回目1022
5回目1028
6回目1016
7回目1037
8回目1072
9回目1056
10回目1110
平均1058
Failed requests合計0回


















アクセレーターeAccelerator(ms)
キャッシュ方式ディスク&メモリ
圧縮無効
1回目1011
2回目1048
3回目1036
4回目1043
5回目1086
6回目1038
7回目1044
8回目1451
9回目1577
10回目1055
平均1148.9
Failed requests合計0回


















アクセレーターeAccelerator(ms)
キャッシュ方式メモリ
圧縮有効
1回目1073
2回目1082
3回目1917
4回目1070
5回目1044
6回目1038
7回目1024
8回目1036
9回目1032
10回目994
平均1131
Failed requests合計0回


















アクセレーターeAccelerator(ms)
キャッシュ方式メモリ
圧縮無効
1回目1837
2回目1182
3回目1187
4回目1028
5回目1529
6回目1044
7回目1026
8回目1366
9回目1061
10回目1024
平均1228.4
Failed requests合計0回


















アクセレーターeAccelerator(ms)
キャッシュ方式ディスク
圧縮有効
1回目1047
2回目1032
3回目1034
4回目1043
5回目1059
6回目1029
7回目1083
8回目1035
9回目1493
10回目1058
平均1091.3
Failed requests合計0回


















アクセレーターeAccelerator(ms)
キャッシュ方式ディスク
圧縮無効
1回目1156
2回目1088
3回目1033
4回目1019
5回目999
6回目1018
7回目1007
8回目993
9回目996
10回目1002
平均1031.1
Failed requests合計0回


結果


APCが最も高速で比較的安定した値を出していました。



eAcceleratorではキャッシュモードをディスクにして圧縮を有効にした方が速い結果には驚きでしたが、APCと4ms程度の差でしたので殆ど差がないと言ってもいいと思います。



ただ、これらのベンチマークは動作するプログラムなどによって大きく異なる可能性が高いのでプログラムごとにベンチマークを取った方がいいでしょう。



0 件のコメント:

コメントを投稿