在未看到这篇文章之前我们一般不会对于缓存这么看重,经过测试之后我们发现使用文件缓存比直接使用数据库要快几倍,下面测试是6倍之多,下面一起来看看吧.
在Thinkphp项目中测试各种环境下的程序执行时间,不使用缓存,代码如下:
- <?php
- header("content-type:text/html;charset=utf-8");
- $starttime=caltime();
- $articles=array();
-
- for($i=0;$i<100;$i++){
- $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
- $articles=array_merge($articles,M('article')->query($sql));
- }
-
- $overtime=caltime();
-
- echo '不使用缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';
-
- ?>
结果:不使用缓存条件下程序执行时间是:0.0600001811981秒,文件缓存,代码如下:
- <?php
- header("content-type:text/html;charset=utf-8");
-
- $starttime=caltime();
-
- $articles=S('articles');
- if(!$articles){
- $articles=array();
-
- for($i=0;$i<100;$i++){
- $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
- $articles=array_merge($articles,M('article')->query($sql));
- }
- S('articles',$articles,60);
- }
-
- $overtime=caltime();
-
- echo '使用文件缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';
- ?>
结果:使用文件缓存条件下程序执行时间是:0.00999999046326秒,代码如下:
- <?php
- header("content-type:text/html;charset=utf-8");
-
- $starttime=caltime();
-
- $mem=new Memcache();
- if(!$mem->connect('127.0.0.1',11211)){
- echo '连接失败';
- }
-
- $articles=$mem->get('articles');
-
- if(!$articles){
- $articles=array();
-
- for($i=0;$i<100;$i++){
- $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
- $articles=array_merge($articles,M('article')->query($sql));
- }
- $mem->set('articles',$articles,MEMCACHE_COMPRESSED,60);
- }
-
- $overtime=caltime();
-
- echo '使用memcache缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';
- ?>
结果:使用memcache缓存条件下程序执行时间是:0.00999999046326秒,代码如下:
- <?php
- header("content-type:text/html;charset=utf-8");
-
- $starttime=caltime();
-
- $redis=new Redis();
- $redis->connect('127.0.0.1','6379');
-
- if(!$redis){
- echo '连接失败';
- }
-
- $articles=$redis->get('articles');
-
- if(!$articles){
- $articles=array();
-
- for($i=0;$i<100;$i++){
- $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
- $articles=array_merge($articles,M('article')->query($sql));
- }
- $redis->setex('articles',60,$articles);
- }
-
- $overtime=caltime();
-
- echo '使用redis缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';
-
- ?>
结果:使用redis缓存条件下程序执行时间是:0.00999999046326秒,可见使用缓存的条件下,程序的执行速度比不使用缓存的时候快了6倍,但是不同缓存由于数据不是特别庞大,几乎没有什么差别. |