麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 語(yǔ)言 > PHP > 正文

使用PHP原生函數(shù)就一定比自定義函數(shù)快嗎?

2024-09-04 11:49:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

之前聽(tīng)到過(guò)的一個(gè)前輩關(guān)于php性能優(yōu)化的說(shuō)法——PHP為我們提供了那么多的原聲函數(shù),我們盡量用原生函數(shù)解決問(wèn)題,但是有時(shí)在想,php原生態(tài)的函數(shù)就一定快嗎?現(xiàn)在看到一個(gè)國(guó)外的人寫(xiě)的函數(shù),就來(lái)測(cè)試一下.

今天在閱讀kohana源碼中的Arr類(lèi)的時(shí)候發(fā)現(xiàn)了這樣一個(gè)函數(shù),代碼如下:

  1. /** 
  2.  * Fill an array with a range of numbers. 
  3.  * 
  4.  *     // Fill an array with values 5, 10, 15, 20 
  5.  *     $values = Arr::range(5, 20); 
  6.  * 
  7.  * @param   integer $step   stepping 
  8.  * @param   integer $max    ending number 
  9.  * @return  array 
  10.  */ 
  11. public static function range($step = 10, $max = 100) 
  12.     if ($step < 1) 
  13.         return array(); 
  14.  
  15.     $array = array(); 
  16.     for ($i = $step$i <= $max$i += $step
  17.     { 
  18.         $array[$i] = $i
  19.     } 
  20.  
  21.     return $array

看到這里的時(shí)候,我發(fā)現(xiàn)php的原聲函數(shù)也是可以實(shí)現(xiàn)這個(gè)功能的,忽然想到之前聽(tīng)到過(guò)的一個(gè)前輩關(guān)于php性能優(yōu)化的說(shuō)法——PHP為我們提供了那么多的原聲函數(shù),我們盡量用原生函數(shù)解決問(wèn)題,于是我就做了個(gè)測(cè)試,看看php原生函數(shù)性能究竟比自己寫(xiě)的快多少,要測(cè)試的函數(shù)有原生函數(shù)range()和上面的函數(shù)_range(),這里加下劃線開(kāi)始是因?yàn)橹貙?xiě)原聲函數(shù)range()會(huì)報(bào)錯(cuò)“Fatal error:Cannot redeclare range() in”.

代碼如下:

  1. function _range($step = 10, $max = 100) 
  2.     if ($step < 1) 
  3.         return array(); 
  4.     $array = array(); 
  5.     for ($i = $step$i <= $max$i += $step
  6.     { 
  7.         $array[$i] = $i
  8.     } 
  9.     return $array
  10. //開(kāi)源軟件:Vevb.com 
  11. $time['begin'] = microtime(true); 
  12. $tmp = range(0,1000000,3); 
  13. //$tmp = _range(0,1000000,3); 
  14. $time['end']   = microtime(true); 
  15.  
  16. echo $time['end'] - $time['begin'].'s'."r"
  17. echo (memory_get_peak_usage()/1024/1024)."M"

分別用原生函數(shù)和自定義函數(shù)進(jìn)行測(cè)試,在產(chǎn)生0~1000000之間所有的3的倍數(shù)時(shí),結(jié)果出乎我的意料.

為了結(jié)果比較準(zhǔn)確,我在做個(gè)圖表統(tǒng)計(jì).

  1. 統(tǒng)計(jì)次數(shù)     原生函數(shù)range()     自定義函數(shù)_range() 
  2. (0,1000000,3)     5.155E-3s     27.5530M     1.907E-5s     0.1241M 
  3. (0,1000000,2)     7.479E-3s     40.2688M     1.811E-5s     0.1241M 
  4. (0,1000,1)     8.16E-5s     0.1620M     2.649E-5s     0.1241M 

從表中可以看出產(chǎn)生隨機(jī)數(shù)時(shí)自定義函數(shù)比原生函數(shù)要節(jié)省內(nèi)存和時(shí)間,而且原生函數(shù)在生成大量隨機(jī)數(shù)時(shí)特別耗內(nèi)存,消耗時(shí)間也特別多,而自定義函數(shù)在這方面則表現(xiàn)得好,產(chǎn)生的內(nèi)存和消耗的時(shí)間基本穩(wěn)定,看來(lái)前面那位前輩說(shuō)的不一定完全正確哦,但是這里要注意我們這里的自定義函數(shù)只能生成數(shù)字,而原生的range還可以產(chǎn)生字母的,但是我想這自定義函數(shù)添加個(gè)字母應(yīng)該也不會(huì)太難~

看來(lái)kohana官方對(duì)range這個(gè)函數(shù)很是了解,對(duì)php內(nèi)核中該函數(shù)的復(fù)雜度也很了解,所以這個(gè)小優(yōu)化才可以做這么好,太厲害了.

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蜜桃av鲁一鲁一鲁一鲁 | 精国产品一区二区三区四季综 | 日本最新免费二区三区 | 久久人人97超碰国产公开结果 | 91精品国产91久久久久久蜜臀 | 草b视频在线观看 | 性爱免费视频 | 在线成人av观看 | 49vvv| asiass极品裸体女pics | 亚洲成人精品一区二区 | av播放在线 | 日本爽快片100色毛片视频 | 欧美一区二区三区免费观看 | 在线中文字幕观看 | 欧美人xx | 久久777国产线看观看精品 | 日韩欧美电影一区二区三区 | www.54271.com| 国产免费视频一区二区裸体 | 日韩视频一区二区三区在线观看 | 十级毛片 | 斗罗破苍穹在线观看免费完整观看 | 国产精品久久久久久久成人午夜 | 91成人天堂久久成人 | 国产精品久久久久久久久久久久午夜 | 羞羞视频免费观看网站 | 欧美一级淫片免费播放口 | 黄网站免费观看视频 | 中文字幕在线观看精品 | 91精品中文字幕 | 欧美一级片一区 | 国产精品视频一区二区三区四 | 毛片成人| 欧美性受ⅹ╳╳╳黑人a性爽 | 91色琪琪电影亚洲精品久久 | 一区二区久久久久草草 | 久久色网站 | 日本成人在线免费 | 九九热免费观看 | 国产99久久久久久免费看 |