《PHP教程:PHP原生函數(shù)一定好嗎?》要點(diǎn):
本文介紹了PHP教程:PHP原生函數(shù)一定好嗎?,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
本日在閱讀kohana源碼中的Arr類的時(shí)候發(fā)現(xiàn)了這樣一個(gè)函數(shù)PHP學(xué)習(xí)
??$array = array();
??for ($i = $step; $i <= $max; $i += $step)
??{
???$array[$i] = $i;
??}PHP學(xué)習(xí)
??return $array;
?}
?PHP學(xué)習(xí)
??? 看到這里的時(shí)候,我發(fā)現(xiàn)php的原生函數(shù)也是可以實(shí)現(xiàn)這個(gè)功能的,忽然想到之前聽到過的一個(gè)前輩關(guān)于php性能優(yōu)化的說法――PHP為我們提供了那么多的原生函數(shù),我們盡量用原生函數(shù)辦理問題.于是我就做了個(gè)測(cè)試,看看php原生函數(shù)性能究竟比自己寫的快多少.要測(cè)試的函數(shù)有原生函數(shù)range()和上面的函數(shù)_range(),這里加下劃線開始是因?yàn)橹貙懺瘮?shù)range()會(huì)報(bào)錯(cuò)“Fatal error: Cannot redeclare range() in”.PHP學(xué)習(xí)
??? 分別用原生函數(shù)和自定義函數(shù)進(jìn)行測(cè)試,在發(fā)生0~1000000之間所有的3的倍數(shù)時(shí),結(jié)果出乎我的意料:PHP學(xué)習(xí)
首先是使用原生函數(shù)的成果:PHP學(xué)習(xí)
?PHP學(xué)習(xí)
下面是使用自定義函數(shù)的成果:PHP學(xué)習(xí)
?PHP學(xué)習(xí)
為了結(jié)果比擬準(zhǔn)確,我在做個(gè)圖表統(tǒng)計(jì)PHP學(xué)習(xí)
統(tǒng)計(jì)次數(shù)?原生函數(shù)range()?自定義函數(shù)_range()
(0,1000000,3)?5.155E-3s?27.5530M?1.907E-5s?0.1241M
(0,1000000,2)?7.479E-3s?40.2688M?1.811E-5s?0.1241M
(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)定,看來前面那位前輩說的不必定完全正確哦,但是這里要注意我們這里的自定義函數(shù)只能生成數(shù)字,而原生的range還可以產(chǎn)生字母的,但是我想這自定義函數(shù)添加個(gè)字母應(yīng)該也不會(huì)太難~PHP學(xué)習(xí)
??? 看來kohana官方對(duì)range這個(gè)函數(shù)很是了解,對(duì)php內(nèi)核中該函數(shù)的繁雜度也很了解,所以這個(gè)小優(yōu)化才可以做這么好,太厲害了!!!PHP學(xué)習(xí)
《PHP教程:PHP原生函數(shù)一定好嗎?》是否對(duì)您有啟發(fā),歡迎查看更多與《PHP教程:PHP原生函數(shù)一定好嗎?》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/13438.html