国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP程序加速探索的代碼優化方法

2024-05-04 23:04:08
字體:
來源:轉載
供稿:網友

  握了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程序都會用到,在實際開發中我發現最影響整個系統效率的就是數據庫這部份。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 得荣县| 丽水市| 平武县| 凌源市| 龙海市| 崇信县| 都昌县| 太湖县| 广德县| 肇东市| 临清市| 涿鹿县| 高阳县| 大城县| 西充县| 福清市| 昭平县| 沁水县| 巴彦县| 武胜县| 钦州市| 江川县| 登封市| 台中县| 土默特右旗| 且末县| 鄂尔多斯市| 呼和浩特市| 灌云县| 葵青区| 双牌县| 和顺县| 昭觉县| 黑龙江省| 杭锦旗| 阳信县| 金山区| 顺平县| 乌苏市| 罗定市| 盐边县|