首页 > Web开发 > 详细

Centos下10000次循环测试php对Redis和共享内存(shm)读写效率

时间:2018-06-06 19:15:57      阅读:147      评论:0      收藏:0      [点我收藏+]

redis和memcache还有共享内存都是读取内存的数据,为了测试一下到底效率谁更胜一筹,我在我的Centos虚拟机下做了一次公平的测试。

测试参数

环境:Centos (配置忽略)、语言:PHP、WebServer:Nginx、测试次数:10000、字符类型及长度:字符串(1024)

准备测试

测试数据

<?php
//测试数据
$arr = array( 1 => 
  array (id => 4146,attacksdfdsfdsddddddddddd => 5.45,atk_class => 神圣级,wufang => 4.9,def_class => 超神级,cefang => 4.9,mdf_class => 超神级,hp => 6.43,hp_class => 神王级,dodge => 55,dodge_class => SSSS,crit => 50,crit_class => SSS,penetrate => 55,penetrate_class => SSSS,mingzhong => 51,hit_class => SSSS,anti_dizziness => 0,anti_dizzinesssdfdsfdsfdsfdsfds_class => F,anti_critical => 20,anti_critical_class => F,tenacity => 0,tenacity_class => F,
  ),
  2 => 
  array (id => 414ddffff7,attack => 5.45,atk_class => 神圣级,wufang => 4.95,def_class => 超神级,cefang => 4.95,mdf_class => 超神级,hp => 6.43,hp_class => 神王级,dodge => 55,dodge_class => SSSS,crit => 50,crit_class => SSS,penetrate => 55,penetrate_class => SSSS,mingzhong => 51,hit_class => SSSS,anti_dizziness => 0,anti_dizziness_clsdfdsfdsfdsfdsfdsass => F,anti_critical => 20,anti_critical_class => F,tenacity => 0,tenacity_class => F,
  ));

$str = json_encode($arr);
echo strlen($str);          //输出1024

对redis进行10000次写入测试

<?php
$redis = new Redis();
$redis->connect(127.0.0.1,6379);
$redis->auth(310c8cabcdefghf2d8abcdefd44496ac80);
$start = microtime(true) ;

for($i = 0; $i<10000; $i++) {
    $redis->set(key, $str);
}
echo microtime(true) - $start;    //执行5次,大概平均结果为  1.7016470432281 秒

对共享内存(shm)进行10000次写入测试

<?php
$key = 0x4337b123;  
$size = 1024;  
$shmid = @shmop_open($key, c, 0644, $size);  

for($i = 0; $i<10000; $i++) {
    shmop_write($shmid, $str, 0); 
}
@shmop_close($shmid);
echo microtime(true) - $start;  //执行5次,大概平均结果为 0.0025370121002197 秒

对redis进行10000次读测试

<?php
$redis = new Redis();
$redis->connect(127.0.0.1,6379);
$redis->auth(310c8cabcdefghf2d8abcdefd44496ac80);
$start = microtime(true) ;

for($i = 0; $i<10000; $i++) {
    $redis->get(key);
}
echo microtime(true) - $start;     //执行5次,大概平均结果为 2.1236310005188 秒

对共享内存(shm)进行10000次读测试

<?php
$key = 0x4337b123;  
$size = 1024;  
$shmid = @shmop_open($key, c, 0644, $size);  

for($i = 0; $i<10000; $i++) {
    shmop_read($shmid, 0,1024);
}
@shmop_close($shmid);
echo microtime(true) - $start;     //执行5次,大概平均结果为 0.0021078586578369 秒

结果清单

Redis     读:2.1秒             写:1.7秒

Shm       读:0.0021秒      写:0.0025 秒

可见,效果差别悬殊。

Centos下10000次循环测试php对Redis和共享内存(shm)读写效率

原文:https://www.cnblogs.com/wt645631686/p/9146600.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!