ローカル環境でのキャッシュは、APCとMemcachedでどちらを使うか?
apc_fetchが手軽に利用できるのでこちらを使ってみましたが、
memcachedでいいんじゃないかと・・・気になったので計測してみました。
ただし、CLI環境です。
テスト環境(DELL PowerEdge R200改)
CPU | Intel Xeon CPU X3360 2.83GHz (4core) |
メモリ | 8GB |
HDD | 1TB (Hitachi HDT721010SLA360) |
OS | CentOS 6.0 (2.6.32-71.29.1.el6.x86_64) |
apcの設定
apc.enabled=On
apc.enable_cli=On
apc.shm_size="128M"
比較に使用したソースコード(PHP)
$id = 'testtest'; $test_data = array(); $mem = new Memcached(); $mem->addServer('/tmp/memcached.socket',0); for ($i = 0; $i < 1000; $i++) { $cur_array = array(); for ($j = 0; $j < 10; $j++) { $cur_array[$j] = '0123456789abcdef'; } array_push($test_data,$cur_array); } apc_store($id,$test_data,1000); $mem->set($id,$test_data,1000); $time_start = microtime(true); for ($i = 0; $i < 10000; $i++) { $res = apc_fetch($id); } $time_end = microtime(true); $diff_apc = $time_end - $time_start; $time_start = microtime(true); for ($i = 0; $i < 10000; $i++) { $res = $mem->get($id); } $time_end = microtime(true); $diff_mem = $time_end - $time_start; echo 'APC : ' . $diff_apc . PHP_EOL; echo 'Mem : ' . $diff_mem . PHP_EOL;
結果
関数 | 平均処理時間(ms) |
---|---|
apc_fetch() | 10 |
Memcached::get | 5 |
結果は、memcachedが2倍速い。
また、new MemcachedとaddServer()を毎回実行した場合でも、
0.5msほどしか影響しませんでした。
5msの違いでも、10000回実行すると50秒差が出ます。
パフォーマンス優先ならmemcachedですね。
ちなみにmemcachedでunix socketを使用していますが、
IPアドレス(127.0.0.1)でのアクセスでも同程度の処理速度となりました。
ローカル環境でtcpポートの枯渇が気になる場合は、unix socketがオススメです。
0 件のコメント:
コメントを投稿