首页 » 开源分析 » yac和memcache性能对比测试

yac和memcache性能对比测试

 

yac是Laruence开发的一个php进程共享内存的开源项目。详情可以查看。http://www.laruence.com/2013/03/18/2846.html
memcache就不用多说了,如果你不知道拿说明你不是个真正的程序猿。
从应用场景来说,yac相当于本地的memcache,即php程序和memcache搭建在一台服务器上。如果本机的php进程间想共享数据,可以使用yac或者memcache。那么这两个东东那个性能更好呢?今天做了下性能测试。

测试php脚本如下:

<?php
function test_memcache_set(){
    $mem = memcache_connect('127.0.0.1', 11211);
    $value = mt_rand();
    $res = memcache_set($mem, 'var_key', $value, false, 3000);
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    }
}

function test_memcache_get(){
    $mem = memcache_connect('127.0.0.1', 11211);
    $res = memcache_get($mem, 'var_key');
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    } else {
        echo $res;
    }
}

function test_yac_set(){
    $yac = new Yac();
    $value = mt_rand();
    $res = $yac->set('var_key', $value);
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    }
}

function test_yac_get(){
    $yac = new Yac();
    $res = $yac->get('var_key');
    var_dump($res);
    if (!$res) {
        header("HTTP/1.0 404 Not Found");
    } else {
        echo $res;
    }
 
}

echo $_GET<a href='' target='_blank'>&quot;m&quot;</a>;
?&gt;

高并发写的性能
ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_memcache_set
Time per request: 372.394 [ms] (mean)
Time per request: 404.438 [ms] (mean)
Time per request: 401.829 [ms] (mean)

ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_yac_set
Time per request: 196.878 [ms] (mean)
Time per request: 200.621 [ms] (mean)
Time per request: 255.070 [ms] (mean)

高并发读的性能
ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_memcache_get
Time per request: 571.452 [ms] (mean)
Time per request: 571.066 [ms] (mean)
Time per request: 668.744 [ms] (mean)

ab -t 10 -c 100 http://10.32.232.129/test.php?m=test_yac_get
Time per request: 412.464 [ms] (mean)
Time per request: 404.469 [ms] (mean)
Time per request: 380.599 [ms] (mean)

高并发写的时候,同时读的性能
ab -t 30 -c 20 http://10.32.232.129/test.php?m=test_memcache_set
Time per request: 150.284 [ms] (mean)
Time per request: 153.413 [ms] (mean)

ab -t 10 -c 20 http://10.32.232.129/test.php?m=test_memcache_get
Time per request: 125.516 [ms] (mean)
Time per request: 122.119 [ms] (mean)

ab -t 30 -c 20 http://10.32.232.129/test.php?m=test_yac_set
Time per request: 85.494 [ms] (mean)
Time per request: 87.736 [ms] (mean)

ab -t 10 -c 20 http://10.32.232.129/test.php?m=test_yac_get
Complete requests: 1220
Failed requests: 829
(Connect: 0, Length: 829, Exceptions: 0)
Time per request: 164.116 [ms] (mean)

Complete requests: 1300
Failed requests: 809
(Connect: 0, Length: 809, Exceptions: 0)
Time per request: 154.907 [ms] (mean)

测试结论如下:
1.无论单独的并发写,还是单独的并发读,yac都比memcache好。
2.在并发写的同时,并发读。yac已经出现读取数据失败,基本到了不可用的地步。
因此,如果是php程序缓存数据在一台机器上时,并且写的并发不大,建议使用yac。初此之外建议使用memcache。
另外,yac现在还是完善阶段,不建议现在在线上环境使用。

技术交流

原文链接:yac和memcache性能对比测试,转载请注明来源!

原文链接:yac和memcache性能对比测试,转载请注明来源!

4