今天查看系统里的U函数,由于这个函数在网站的使用中调用次数非常高,每个链接的组装都离不开它,所以我想把$router_ruler
改为了静态变量,而不是每次都是router.php
文件里读取。
/** * Url地址构造函数 * @param string $url 控制器和方法 'Blog/blog' * @param array $params array('id'=>1,'p'=>3) * @return string $real_url 伪静态地址 或者真实的$_SERVER['QUERY_STRING'] */ function U($url,$params=null){ //是否开启路由 if(defined('ROUTE') && ROUTE){ //导入路由 $router_ruler = include(dirname(__FILE__).'/route.php'); $real_url = route($router_ruler,$url,$params); }else{ $real_url = urlBuild($url,$params); } return $real_url; }
/** * Url地址构造函数 * @param string $url 控制器和方法 'Blog/blog' * @param array $params array('id'=>1,'p'=>3) * @return string $real_url 伪静态地址 或者真实的$_SERVER['QUERY_STRING'] */ function U($url,$params=null){ //是否开启路由 if(defined('ROUTE') && ROUTE){ //导入路由 static $router_ruler = array(); if(empty($router_ruler)){ $router_ruler = include(dirname(__FILE__).'/route.php'); } $real_url = route($router_ruler,$url,$params); }else{ $real_url = urlBuild($url,$params); } return $real_url; }
下面的3.php
就是模拟的是路由文件,代码如下
return array( 0=>'a', 1=>'b', 2=>'c', 3=>'d', );
模拟U函数的操作
function test($index){ static $router_ruler = array(); if(empty($router_ruler)){ $router_ruler = include(dirname(__FILE__).'/3.php'); } return $router_ruler[$index]; } $time_run_start = microtime(TRUE); $mem_run_start = memory_get_usage(); for ($i=0; $i < 100000; $i++) { test($i%4); } $mem_run_end = memory_get_usage(); $time_run_end = microtime(TRUE); echo '时间消耗:',($time_run_end-$time_run_start),'<br>';//0.032487154006958 echo '内存消耗:',($mem_run_end-$mem_run_start),'<br>';//1432
function test($index){ $router_ruler = include(dirname(__FILE__).'/3.php'); return $router_ruler[$index]; } $time_run_start = microtime(TRUE); $mem_run_start = memory_get_usage(); for ($i=0; $i < 100000; $i++) { test($i%4); } $mem_run_end = memory_get_usage(); $time_run_end = microtime(TRUE); echo '时间消耗:',($time_run_end-$time_run_start),'<br>';//39.312365055084 echo '内存消耗:',($mem_run_end-$mem_run_start),'<br>';//760
使用静态变量的时候是0.03~0.04秒,不使用的时候是39秒多,虽然使用静态变量的时候内存开销大那么一点点,但是占用内存时间短吧!不测不知道,一测吓一跳啊!