php函數,偽函數的使用:函數名長,會影響到效能?

WBOY
發布: 2016-07-29 09:01:16
原創
1021 人瀏覽過

函數名長,會影響到效能
對於php函數的使用,有下列一些建議
1. 一個功能可以用內建函數完成,盡量使用它而不是自己寫php函數。
2. 如果某個功能對效能要求很高,可以考慮用擴充來實現。
3. Php函數呼叫開銷較大,因此不要過度封裝。有些功能,如果需要呼叫的次數很多本身又
只用1、2行程式碼就行實現的,建議就不要封裝呼叫了。
4. 不要過度迷戀各種設計模式,如上一條描述,過度的封裝會帶來效能的下降。需要考慮兩者的權衡。
Php有自己的特點,切不可東施效顰,過度效法java的模式。
5. 函數不宜嵌套過深,遞歸使用要謹慎。
6. 偽函數效能很高,同等功能實現下優先考慮。例如用isset代替array_key_exists
7. 函數回傳引用沒有太大意義,也起不到實際作用,建議不予考慮。
8. 類別成員方法效率不比普通函數低,因此不用擔心效能損耗。建議多考慮靜態方法,可讀性及安全性都更好。
9. 如不是特殊需要,參數傳遞都建議使用傳值而不是傳引用。當然,如果參數是很大的陣列且需要修改時可以考慮引用傳遞。

偽函數及其效能
在php中,有這樣一些函數,它們在使用上是標準的函數用法,但底層實作卻和真正函數呼叫完全不同,這些函數
不屬於前文提到的三種function中的任何一類,其實質是一條單獨的opcode,這裡估且叫做偽函數或者指令函數。
如上所說,偽函數使用起來和標準的函數並無二致,看起來具有相同的特徵。但是他們最終執行的時候是被zend
反映成了一條對應的指令(opcode)來調用,因此其實現更接近if、for、算術運算等操作。
php中的偽函數

<code><span>isset</span><span>empty</span><span>unset</span><span>eval</span></code>
登入後複製

透過上面的介紹可以看出,偽函數由於被直接翻譯成指令來執行,和普通函數相比少了一次函數呼叫所帶來的開銷,
因此性能會更好一些。我們透過以下測試來做一個對比。 Array_key_exists和isset兩者都可以判斷數組中某個key
是否存在,看看他們的性能
從圖上可以看出,和array_key_exists相比,isset性能要高出很多,基本上是前者的4倍左右,而即使是和空函數調用
相比,其性能也要高出1倍左右。由此也側面印證再次說明了php函式呼叫的開銷還是比較大的。

http://txjia.com/tip/?2013-1K-BPEG

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了php函數,偽函數的使用:函數名稱長,會影響到效能? ,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板