首页 > 语言 > 关键词  > php教程最新资讯  > 正文

PHP程序加速探索之代码优化

2008-09-08 08:36 · 稿源:互联网
掌握了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);
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查询优化技术讲座》

举报

  • 相关推荐
  • 苹果iOS 18代码中发现A19/A19 Pro:iPhone 17系列全球首发

    开发者在iOS 18代码中发现了苹果A19和A19 Pro两款芯片,这两款芯片由iPhone 17系列首发搭载。 具体来说,苹果A19代号Tilos,由iPhone 17 Air首发;苹果A19 Pro代号Thera,CPID(组件识别码)为T8150,由iPhone 17 Pro和iPhone 17 Pro Max首发搭载。 据悉,苹果A19和A19 Pro都是基于台积电3n

  • 网友住酒店光脚洗澡感染HPV 医生回应:需注意防护

    ​近日,“酒店光脚洗澡可能感染HPV”这一话题在网络上迅速发酵,引发了公众对公共场所卫生安全问题的广泛关注和热烈讨论。据媒体报道以及医学专家分析,在酒店等公共浴室光脚洗澡,确实存在感染跖疣病毒的风险,而该病毒正是一种低危型HPV病毒。 跖疣,这一由人乳头瘤病毒(HPV)引发的足部良性增生物,其感染多发生在温暖潮湿的环境中。医学专家指出,当足部皮

  • 27岁程序员敲代码时视网膜脱离 眼科医生提醒高危人群

    ​近日, 27 岁的合肥程序员小李经历了一场惊心动魄的健康危机。凌晨 2 点,连续加班数小时的他突然发现电脑屏幕上的代码扭曲变形,视野上方浮现固定黑影,紧急就医后被确诊为孔源性视网膜脱离,且病变已累及视觉中枢黄斑区。经眼科专家连夜实施视网膜复位手术,其右眼视力虽未完全恢复至术前水平,但已保住基本视觉功能。 "这类疾病就像'眼球内的地震'�

  • 酒店光脚洗澡可能感染HPV?医生回应:需注意防护

    近日,“酒店光脚洗澡可能感染HPV”的话题引发广泛关注和热议。据媒体报道及医学专家指出,在酒店等公共场所光脚洗澡,确实存在感染跖疣病毒(一种低危型HPV病毒)的可能性,引发公众对公共场所卫生安全的担忧。 ​跖疣是由人乳头瘤病毒(HPV)引起的足部良性增生物,属于低危型HPV感染。在温暖潮湿的环境中,如酒店浴室,如果足部皮肤有微小破损或伤口,且与病毒

  • 医生回应酒店光脚洗澡或感染HPV:尽量避免在公共场所光脚

    近日,网络上关于在酒店光脚洗澡可能感染病毒的讨论持续升温。 6月30日,医生指出,光脚在酒店等公共场所洗澡确实存在感染跖疣病毒的风险。 跖疣,这一由人乳头瘤病毒引起的足部良性增生物,属于低危型HPV病毒。医生解释说,在足部环境潮湿的情况下,病毒更容易滋生和传播

  • 医生回应酒店光脚洗澡或感染HPV:尽量避免在公共场所光脚行走

    近日,酒店光脚洗澡可能感染跖疣病毒的话题引发广泛讨论。 医学专家指出,跖疣是由HPV病毒(人乳头瘤病毒)引起的足部良性增生,主要与HPV-1、2、4、27、57等亚型相关。这种疾病在潮湿环境中更易传播,足部外伤、摩擦或多汗者风险较高。 临床表现显示,跖疣会导致足跖部角质增生,可见疏松角质软芯及毛细血管出血形成的特征性黑点。多数患者行走时会出现明显疼痛�

  • 程序员被解雇 怒改公司所有密码!获刑7个月铁窗泪

    在英国西约克郡,一位被解雇IT技术人员因心怀怨恨,对雇主公司发动了一场数字攻击,最终被判处7个月零14天的监禁。 根据警方的公告,2022年7月,Mohammed Umar Taj在被公司暂停工作后的数小时内,便开始实施恶意的 数字暴行”。 他非法侵入公司系统,擅自更改登录凭证,还破坏了公司的多因素身份验证系统,致使公司日常运营受到严重干扰,造成至少20万美元的损失。 公�

  • iPhone 17 Pro精准机模现身:铝合金一体化机身 一眼精致

    有博主晒出了苹果iPhone 17 Pro的精准机模,相比之前爆料的机模,新机模的质感、精致度更接近真机。 如图所示,iPhone 17 Pro采用横向大矩阵设计,后置三摄位置在左侧,闪光灯和LIDAR激光雷达扫描仪位于矩阵右侧。 不止于此,iPhone 17 Pro采用一体化铝合金材质,摄像头和机身后盖采用火山口过渡设计,这个火山口跟后盖是一体化成型,必须单独铣出,工艺难度很高。

  • 苹果用户最好购车选择!小米YU7深度兼容:iPhone、Apple Watch都能控车

    小米YU7已开启交付,首批车主都已经提车回家了。 今天小米汽车官方介绍,YU7延续了SU7的设计理念,充分针对苹果用户优化用车体验,打造让苹果用户也能轻松上手的车型。 首先是iPhone控车更加便捷高效: 支持UWB近场控车与iOS小组件远程控车,比如携带激活了UWB钥匙的苹果手机站在车前3秒,就能打开前备箱; 也可以通过iPhone上的Action Button自定义车控功能,比如一键控车�

  • iPhone 17 Pro/Pro Max对比:Pro Max变得更厚 苹果最厚超大杯

    苹果会在9月推出iPhone 17系列,该系列包括iPhone 17、iPhone 17 Pro、iPhone 17 Pro Max和iPhone 17 Air。 其中iPhone 17 Pro和iPhone 17 Pro Max是苹果的高端系列,从最新爆料的消息来看,今年的Pro和Pro Max之间差距最明显的是厚度。 博主i冰宇宙爆料,iPhone 17 Pro Max的厚度为8.76mm,对比iPhone 16 Pro Max的8.25mm,前者增厚0.51mm,这是苹果史上最厚的Pro Max机型。