PHP开发程序加速运行探索之慢代码优化方法

把握了PEAR::BenchMark,现在你已经知道如何测试你的代码,知道如何判定你的代码是快是慢,是哪一部份比较慢。那么接下来我要说的就是如何消灭或优化那部份慢的代码。

  这一点上我个人最主要的经验只有两点,一是消除错误的或低效的循环;二是优化数据库查询语句。其实还存在一些其它的优化细节,比如“str_replace比ereg_replace快”、“echo比print快”等等。这些我暂时都放在一边,稍后我会提到用缓存来对付过于频繁的IO。

  下面我们将三个功能相同,但程序写法不同的函数的效率(消耗的时间)进行对比。

  badloops.php

<?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);
function doBenchmark($functionName = null, $arr = null)
{
 reset($arr);
 $benchmark = new Benchmark_Iterate;
 $benchmark->run(MAX_RUN, $functionName, $arr);
 $result = $benchmark->get();
 echo '<br>';
 printf("%s ran %d times where average exec time %.5f ms",$functionName,$result['iterations'],$result['mean'] * 1000);
}

function v1($myArray = null) {
 // 效率很差的循环
 for ($i =0; $i < sizeof($myArray); $i )
 {
  echo '<!--' . $myArray[$i] . ' --> ';
 }
}

function v2($myArray = null) {
 // 效率略有提高
 $max = sizeof($myArray);
 for ($i =0; $i < $max ; $i )
 {
  echo '<!--' . $myArray[$i] . ' --> ';
 }
}

function v3($myArray = null){
 //最佳效率
 echo "<!--", implode(" --> <!--", $myArray), " --> ";
}

?>

  程序输出的结果大概是这样的:

  v1 ran 100 times where average exec time 0.18400 ms
  v2 ran 100 times where average exec time 0.15500 ms
  v3 ran 100 times where average exec time 0.09100 ms

  可以看到,函数的执行时间变少,效率上升。

  函数v1有个很明显的错误,每一次循环的时间,都需要调用sizeof()函数来计算。

函数v2则在循环外把$myArray数组的元素个数存到$max变量中,避免了每次循环都要计算数组的元素个数,所以效率提高了。函数v3的效率最高,利用了现成的函数,避免循环。

  这个例子只是给你一个感性的熟悉,明白什么是相对高效的代码。在实际开发中,我相信会有很多人会模模糊糊地写出很多低效率的代码。要把代码写得精炼而高效,恐怕需要时间去锤炼:-) 但这是另一个话题了,我们略过不谈。

  数据库应用基本上每个PHP程序都会用到,在实际开发中我发现最影响整个系统效率的就是数据库这部份。至于数据库的优化和数据查询语句的优化,在此限于篇幅不具体讨论。

时间: 2024-10-22 10:45:58

PHP开发程序加速运行探索之慢代码优化方法的相关文章

插件-开发一个云处理平台,从开发到运行需要多久时间,开发资金需要多少

问题描述 开发一个云处理平台,从开发到运行需要多久时间,开发资金需要多少 在云服务器中存储大量vst插件,多个本地端通过云端同时调用多个不同或相同的vst插件进行使用.想问的让本地用户编辑云端上的vst插件有什么方法,怎么实现多人同时公用不同或相同的vst插件.开发周期大概需要多久,开发资金需要多少?本人没有一点程序基础.只是有这么一个想法.希望各位大师能帮我看看这个想法可不可能实现. 解决方案 估算了下,大约需要1个架构师,3个程序员开发大约3~4个月,开发费用大约40~70万人民币.

VB+Oracle 9i如何构建开发和运行的环境

 如何选择前台开发工具 如何构建开发和运行环境     一个VB+Oracle 9i的数据库应用从逻辑上看有3个组成部分.如图10.1所示.    1. 构建开发和运行客户机    在开发客户机上幸韵鹿ぷ鳌?br>     (1)安装VB.    (2)安装Oralce 9i客户机,最好是管理员,这样可以及时管理后台数据库服务器上的数据.    (3)测试Oracle 9i的客户机是否能够正常连通数据库服务器.    在运行客户机上要进行如下工作.    (1)安装用VB开发好的应用程序. 

WASD Tools for Eclipse开发和运行适于Liberty配置文件的数据访问应用程序

使用 WebSphere Application Server Developer Tools for Eclipse开发和运行适用于Liberty配置文件的数据访问应用程序 简介 Liberty 配置文件是 IBM WebSphere Application Server V8.5 中的一个动态的.可组合的配置文件,为 Web 应用程序提供了一个简化的轻型运行时环境.通过使用一个插入目录,或者将应用程序添加到服务器配置中,Liberty 配置文件还提供了快速部署应用程序的功能.Liberty

spark (java API) 在Intellij IDEA中开发并运行

概述:Spark 程序开发,调试和运行,intellij idea开发Spark java程序. 分两部分,第一部分基于intellij idea开发Spark实例程序并在intellij IDEA中运行Spark程序.第二部分,将开发程序提交到Spark local或者hadoop YARN集群运行.Github项目源码 图1,直接在intellij IDEA(社区版)中开发调试,直接run. 图2,直接在intellij IDEA(社区版)中用hadoop YARN模式. Github项目源

软件开发-为什么运行后窗口一闪就不见了?

问题描述 为什么运行后窗口一闪就不见了? 为什么运行后窗口一闪就不见了,怎样让它显示出来?开发-为什么运行后窗口一闪就不见了?-运行窗口一闪就没了"> 解决方案 加个中断呗,system(pause); 解决方案二: 最后一行下断点 解决方案三: 打个断点,,调试一下什么情况 解决方案四: 最好用的,你就在main函数结束之前把加一行代码,getchar();吞噬一个字符,这样就可以了, sleep函数也可以... 解决方案五: 或者直接文件输出结果 然后在代码所在位置寻找结局(a.txt

cocos2d iphone-cocos2d-x游戏开发 编译 运行

问题描述 cocos2d-x游戏开发 编译 运行 未找到配置文件 E:HelloCpp.cocos-project.json在命令窗口中运行cocos2d-x项目时碰到这个问题怎么解决啊,求大神.谢谢! 解决方案 cocos2d-x游戏开发之一 解决方案二: 初始创建工程的时候 你的路径应该不是引擎默认的路径 他预读的路径应该是引擎所在的路径

java-求教各位Java程序语言大神,用Java语言编写一个能在Eclipse开发工具运行的音乐播放器

问题描述 求教各位Java程序语言大神,用Java语言编写一个能在Eclipse开发工具运行的音乐播放器 这个音乐播放器要有基本的功能,例如(这几个播放方式最好有图标)开始播放.停止播放.两三个播放模式:音乐播放的进度条:播放列表:有歌手的背景图. 最后一个要求:编程能在Eclipse开发工具了运行. 本人新手,对Java语言很多不懂,所以如果可以的话,可以在某些关键的代码后面注释,谢谢! 也可以发到我邮箱:sxl2860@163.com,如果是发到我邮箱的,请大神们说一声! 如果做得好的话,及

windows server 2008-微软 .NET 4.5 框架开发,运行于 Windows Server 2008+,这种软件怎么样?

问题描述 微软 .NET 4.5 框架开发,运行于 Windows Server 2008+,这种软件怎么样? 最近遇到了一个软件,微软 .NET 4.5 框架开发,运行于 Windows Server 2008+,这种软件怎么样? http://meetfine.com 他们的官网介绍的.求分析稳定性. 解决方案 这应该是个广告 解决方案二: 功能强大,同时对硬件配置要求也比较高. 解决方案三: 很好 开发很流畅 当然如果不安装其他垃圾应用软件的话 解决方案四: 一般这种程序的稳定性是有保障的

《网络安全体系结构》一2.3 安全系统的开发与运行概述

2.3 安全系统的开发与运行概述 网络安全体系结构现在你已经对安全策略的概念,以及实施这些规则的方式有了基本的了解,在这一节中,我们会把这些知识放到安全系统的开发与运行的环境进行讨论.首先,我们可以看到对这个过程的概括.图2-1所示的是此过程及其各步骤之间相互关系的概述. 业务需求和风险分析是安全策略的主要来源.全部安全策略都是由三类不同的文档构成的. 策略-是安全策略的基本要素,一般不是某种特定的技术,而是一些与网络运行有关的更加宏观的因素.指导方针-组织机构的最佳做法.标准-是一套针对某项技