技巧:PHP开发网站程序代码的优化方法

  如何消灭或优化那PHP开发网站程序的代码呢?

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

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

  webjx.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-07 00:23:38

技巧:PHP开发网站程序代码的优化方法的相关文章

百度对新网站收录看法与优化方法

百度对新网站收录看法与优化方法下面我们来看看站长写的6点网站优化教程方法哦,特别是对新的百度现在越来越把时间放长了哦. 1.分析LOG,我现在每天都会把日志文件下载下来看,基本上可以看到那些蜘蛛来过,自己做到心中有数,就目前来看,SOSO的蜘蛛来的最频繁,SOGOU其次,BAIDU紧跟着,GOOGLE偶尔来一下,所以我现在发布的文章基本上SOSO很快就会收录,不过没什么流量.不过不要小看搜狗.SOSO,其实做好了流量也挺大的,我曾经做过一个站每天从搜狗来10万IP,扯远了,有机会我再来谈谈搜狗的

浅析地方门户网站频道内页优化方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 地方房产信息门户网站各大频道是网站核心,每个频道都可以给网站带来搜索流量,不同的频道需要优化的方法也是不同的.虽然网站的首页权重高,但是门户信息不可能所有的信息都放置在首页,频道内页也应该要合理利用,频道内页要如何优化呢?笔者给大家分享几点频道内页优化方法. 房产楼盘频道 房产门户信息网站,楼盘信息频道是网站引流最多的.楼盘频道标题写法原则:

ASP.NET开发网站程序常见错误汇总

在运用Visiol studio.NET 开发Web 应用程式中,开发者常常会遇到一些问题:如我开发好的程式,在开发环境下测试没问题,怎么一搬到应用环境下,就会有问题? 不是程式的无法运行,就是程式的效率慢的同蜗牛在爬, 这种情况在.NET的新手中尤其常见.我不知道为什么,一些介绍.NET开发的书本里引用的例子代码,也对此问题视而不见,尤其让我郁闷的是一些我喜欢的书,如:<<ADO.NET技术内幕>>,<<ASP.NET2.0高级编程(第4版 )>>,这两本

asp.net性能优化之程序与数据库优化方法

一, SqlDataRead和Dataset的选择 Sqldataread优点:读取数据非常快.如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多.缺点:直到数据读完才可close掉于数据库教程的连接 (SqlDataReader 读数据是快速向前的.SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法.它使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据.DataRead

ASP.NET技巧:开发时复制aspx网页的方法

asp.net|技巧|网页 简单的copy /paste    *.aspx网页,所使用的是同一个CodeBehind  ,这往往不是我们所想要的!!! 我们一般都希望使这两个网页具有各自的  *.cs文件. 步骤: ①新建一个WebForm. ②把源和目标网页都切换到HTML设计页面,进行HTML代码整个替换copy  关键:[第一行黄色背景的代码不要拷贝和替换] ③把源和目标网页的*.cs代码全部替换, 关键:[要把拷贝后的类名改为你新建的WebForm的名称]

浅谈网站标题与描述优化方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天闲来无事,对几个站进行了分析.发现一些站的关键词和描述,都是一模一样的.然而有些大站已经权重很高了,所以排在前几名,而新站由于权重过低,所以在茫茫的站海之外.我们站长最需要的就是一个好的排名,只有排名高,才会流量高,也才会收入高.那么取得一个好的排名,就需要有一个好的开始,也就是网站的首页标题及关键词描述.相同的站点很多,导致同样的内容也

开发商业静态网站程序让我月入5000

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 看到很多运营网站.靠网站广告收入的站长们写的经验心得,我就写一写开发商业程序的一些经验吧. 我在大学时候就开发网站程序了,只不过是动态网站程序,2005年大四临近毕业的一天,一个沈阳的朋友打电话给我,说:你的商城系统能不能帮我修改成静态的,就是后台生成前台静态页面的那种程序我说:行,总价1200元,客户打了400元定金.在毕业之前,我顺利开发

PHP应用程序的性能优化

程序|性能|优化 使用PHP编程的最大好处是学习这种编程语言非常容易以及其丰富的库.即使对需要使用的函数不是十分了解,我们也能够猜测出如何完成一个特定的任务. 尽管PHP非常简单易学,但我们仍然需要花费一点时间来学习PHP的一些编程技巧,尤其是与性能和内存占用相关的技巧.在PHP中,有许多小技巧能够使我们减少内存的占用,并提高应用程序的性能.在本篇文章中,我们将对PHP应用程序的分析.如何改变脚本代码以及比较优化前后的各种参数值进行简要的介绍. 通过在程序中设置计时的程序,并反复执行这些代码,我

红涛:改版后的网站如何做SEO优化

一般我们接触的网站可以分为两种:新网站与老网站.那么我们今天既然谈到改版,那肯定是指老网站啦!如果说得更细就是一些不符合SEO条件的老网站,一定得进行改版重构.说到这里红涛推荐一下两篇比较值一看的文章:新站如何才能让百度快速收录与企业网站如何做百度排名 提到改版这人概念,给我们头脑里面的第一个概念就是重新做一个网站,只不过是域名还用原来的老域名.确实是这样的,只不过我们改版的条件是:网站风格设计不符合客户的行业.网站的结构不符合SEO.网站URL太复杂{一般指带多种参数的URL}等等,根据这几种