技巧:PHP開發網站程式碼的最佳化方法

來源:互聯網
上載者:User

  如何消滅或最佳化那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程式都會用到,在實際開發中我發現最影響整個系統效率的就是資料庫這部份。至於資料庫的最佳化和資料查詢語句的最佳化,在此限於篇幅不詳細討論。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。