PHP程序加速探索之代碼優化

發表于:2007-09-07來源:作者:點擊數: 標簽:
掌握了PEAR::BenchMark,現在你已經知道如何 測試 你的代碼,知道如何判斷你的代碼是快是慢,是哪一部份比較慢。那么接下來我要說的就是如何消滅或優化那部份慢的代碼。 這一點上我個人最主要的經驗只有兩點,一是消除錯誤的或低效的循環;二是優化 數據庫 查
掌握了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] . ' --> ';
 }
}


熱門推薦 化繁為簡 QQ最實用的六大絕招 QQ2005 Beta3功能搶先使用評測
[1] [2]下一頁

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97