网站地图    收藏   

主页 > php专栏 > php应用 >

php中用缓存与不用缓存性能测试 - php高级应用

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:次

[导读] 在未看到这篇文章之前我们一般不会对于缓存这么看重,经过测试之后我们发现使用文件缓存比直接使用数据库要快几倍,下面测试是6倍之多,下面一起来看看吧.在Thinkphp项目中测试各种环...

php中用缓存与不用缓存性能测试

在未看到这篇文章之前我们一般不会对于缓存这么看重,经过测试之后我们发现使用文件缓存比直接使用数据库要快几倍,下面测试是6倍之多,下面一起来看看吧.

在Thinkphp项目中测试各种环境下的程序执行时间,不使用缓存,代码如下:

  1. <?php  
  2. header("content-type:text/html;charset=utf-8"); 
  3. $starttime=caltime();//开始时间    
  4. $articles=array(); 
  5. //循环取出500条文章信息 
  6. for($i=0;$i<100;$i++){ 
  7.    $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5"; 
  8.    $articles=array_merge($articles,M('article')->query($sql)); 
  9. }//开源代码phpfensi.com 
  10.  
  11. $overtime=caltime();//结束时间 
  12.  
  13. echo '不使用缓存条件下程序执行时间是:'.($overtime-$starttime).'秒'; 
  14.  
  15. ?> 

结果:不使用缓存条件下程序执行时间是:0.0600001811981秒,文件缓存,代码如下:

  1. <?php  
  2. header("content-type:text/html;charset=utf-8"); 
  3.  
  4. $starttime=caltime();//开始时间 
  5.  
  6. $articles=S('articles'); 
  7. if(!$articles){ 
  8.    $articles=array(); 
  9.    //循环取出500条 www.phpfensi.com 文章信息 
  10.    for($i=0;$i<100;$i++){ 
  11.        $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5"; 
  12.        $articles=array_merge($articles,M('article')->query($sql)); 
  13.    } 
  14.    S('articles',$articles,60); 
  15. } 
  16.  
  17. $overtime=caltime();//结束时间 
  18.  
  19. echo '使用文件缓存条件下程序执行时间是:'.($overtime-$starttime).'秒'; 
  20. ?> 

结果:使用文件缓存条件下程序执行时间是:0.00999999046326秒,代码如下:

  1. <?php  
  2. header("content-type:text/html;charset=utf-8"); 
  3.         
  4. $starttime=caltime();//开始时间 
  5.  
  6. $mem=new Memcache(); 
  7. if(!$mem->connect('127.0.0.1',11211)){ 
  8.    echo '连接失败'; 
  9. } 
  10.  
  11. $articles=$mem->get('articles'); 
  12.  
  13. if(!$articles){ 
  14.    $articles=array(); 
  15.    //循环取出500条文章信息 
  16.    for($i=0;$i<100;$i++){ 
  17.        $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5"; 
  18.        $articles=array_merge($articles,M('article')->query($sql)); 
  19.    } 
  20.    $mem->set('articles',$articles,MEMCACHE_COMPRESSED,60); 
  21. } 
  22.  
  23. $overtime=caltime();//结束时间 
  24.  
  25. echo '使用memcache缓存条件下程序执行时间是:'.($overtime-$starttime).'秒'; 
  26. ?> 

结果:使用memcache缓存条件下程序执行时间是:0.00999999046326秒,代码如下:

  1. <?php  
  2. header("content-type:text/html;charset=utf-8"); 
  3.         
  4. $starttime=caltime();//开始时间 
  5.  
  6. $redis=new Redis(); 
  7. $redis->connect('127.0.0.1','6379'); 
  8.  
  9. if(!$redis){ 
  10.    echo '连接失败'; 
  11. } 
  12.  
  13. $articles=$redis->get('articles'); 
  14.  
  15. if(!$articles){ 
  16.    $articles=array(); 
  17.    //循环取出500条www.phpfensi.com文章信息 
  18.    for($i=0;$i<100;$i++){ 
  19.        $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5"; 
  20.        $articles=array_merge($articles,M('article')->query($sql)); 
  21.    } 
  22.    $redis->setex('articles',60,$articles); 
  23. } 
  24.  
  25. $overtime=caltime();//结束时间 
  26.  
  27. echo '使用redis缓存条件下程序执行时间是:'.($overtime-$starttime).'秒'; 
  28.  
  29. ?> 

结果:使用redis缓存条件下程序执行时间是:0.00999999046326秒,可见使用缓存的条件下,程序的执行速度比不使用缓存的时候快了6倍,但是不同缓存由于数据不是特别庞大,几乎没有什么差别.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论