时间:2016-02-24 15:19 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【PHP程序加速探索之代码优化】,下面是详细的分享!
PHP程序加速探索之代码优化
掌握了PEAR::BenchMark,现在你已经知道如何测试你的代码,知道如何判断你的代码是快是慢,是哪一部份比较慢。那么接下来我要说的就是如何消灭或优化那部份慢的代码。这一点上我个人最主要的经验只有两点,一是消除错误的或低效的循环;二是优化数据库查询语句。其实还存在一些其它的优化细节,比如“str_replace比ereg_replace快”、“echo比print快”等等。这些我暂时都放在一边,稍后我会提到用缓存来对付过于频繁的IO。
下面我们将三个功能相同,但程序写法不同的函数的效率(消耗的时间)进行对比。
badloops.php
require_once('Benchmark/Iterate.php');
define('MAX_RUN',100);
$data=array(1,2,3,4,5);
doBenchmark('v1',$data);
doBenchmark('v2',$data);
doBenchmark('v3',$data);
functiondoBenchmark($functionName=null,$arr=null)
{
reset($arr);
$benchmark=newBenchmark_Iterate;
$benchmark->run(MAX_RUN,$functionName,$arr);
$result=$benchmark->get();
echo'<br>';
printf("%sran%dtimeswhereaverageexectime%.5fms",$functionName,$result['iterations'],$result['mean']*1000);
}
functionv1($myArray=null){
//效率很差的循环
for($i=0;$i<sizeof($myArray);$i++)
{
echo'<!--'.$myArray[$i].'-->';
}
}
functionv2($myArray=null){
//效率略有提高
$max=sizeof($myArray);
for($i=0;$i<$max;$i++)
{
echo'<!--'.$myArray[$i].'-->';
}
}
functionv3($myArray=null){
//最佳效率
echo"<!--",implode("--><!--",$myArray),"-->";
}
?>
程序输出的结果大概是这样的:
v1ran100timeswhereaverageexectime0.18400ms
v2ran100timeswhereaverageexectime0.15500ms
v3ran100timeswhereaverageexectime0.09100ms
可以看到,函数的执行时间变少,效率上升。
函数v1有个很明显的错误,每一次循环的时间,都需要调用sizeof()函数来计算。函数v2则在循环外把$myArray数组的元素个数存到$max变量中,避免了每次循环都要计算数组的元素个数,所以效率提高了。函数v3的效率最高,利用了现成的函数,避免循环。
这个例子只是给你一个感性的认识,明白什么是相对高效的代码。在实际开发中,我相信会有很多人会迷迷糊糊地写出很多低效率的代码。要把代码写得精炼而高效,恐怕需要时间去锤炼:-)但这是另一个话题了,我们略过不谈。
数据库应用基本上每个PHP程序都会用到,在实际开发中我发现最影响整个系统效率的就是数据库这部份。至于数据库的优化和数据查询语句的优化,在此限于篇幅不详细讨论。读者可参考《MySQL查询优化技术讲座》
以上所分享的是关于PHP程序加速探索之代码优化,下面是编辑为你推荐的有价值的用户互动:
相关问题:PHP中4个加速,缓存扩展的区别和选用建议
答:1、eAccelerator eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-... >>详细
相关问题:php代码优化问题
答:好蛋疼的问题,php的瓶颈不在这里, 如果你的技术达到了瓶颈在语法,那么,你就是大神了。 $c = substr($a,strpos($a,$b) + strlen($b)) >>详细
相关问题:让PHP网站跑的更快 如何优化PHP
答:php(做为现在的主流开发语言)是一种执行起来非常迅速的编程语言,但是比起仅仅优化代码来说仍然值得优化php(做为现在的主流开发语言)本身。 本文我们将根据一些实效阐述为什么优化php(做为现在的主流开发语言)本身要比优化代码来的更贴切... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
