扣丁學(xué)堂PHP培訓(xùn)分享PHP編寫的經(jīng)驗
2018-09-04 10:52:04
1123瀏覽
從事開發(fā)行業(yè)經(jīng)驗也是非常重要的,因此有不少的小伙伴對前輩們的經(jīng)驗都是非常渴望的,本篇文章扣丁學(xué)堂PHP培訓(xùn)小編就和大家分享一下PHP編寫的經(jīng)驗,希望能幫到對PHP開發(fā)感興趣的小伙伴們。
當(dāng)操作字符串并且需要檢驗它的長度是不是可以滿足某種要求時,一般都是當(dāng)然地會去使用strlen()函數(shù)。這個函數(shù)執(zhí)行起來那是相當(dāng)快,因為它不會做任何計算,只是返回在zval結(jié)構(gòu)(C的內(nèi)置數(shù)據(jù)結(jié)構(gòu),是用于存儲PHP變量的)中所存儲的已知的字符串長度。但是,由于strlen()是函數(shù),多多少少的還是會有些慢,這是因為函數(shù)的調(diào)用會經(jīng)過諸多的步驟,例如字母小寫化(譯注:指函數(shù)名的小寫化,PHP是不區(qū)分函數(shù)名大小寫的)、哈希查找,會和被調(diào)用的函數(shù)一并執(zhí)行。在一些情況下,你也可以使用isset()技巧去加速執(zhí)行你的代碼。
(舉例如下)if(strlen($foo)<5){echo'Fooistooshort';}
(和下面的技巧做比較)if(!isset($foo[5])){echo'Fooistooshort';}
調(diào)用isset()剛好要比strlen()快,這是因為和后者不同的是,isset()是作為一種語言結(jié)構(gòu),這就意味著它的執(zhí)行不需要那些函數(shù)查找和字母小寫化。這也就是說,實際上我們在檢驗字符串長度的頂層代碼中沒有花太多的開銷。
當(dāng)我們在執(zhí)行變量$i的遞增或者遞減時,$i++會比++$i稍微慢些。當(dāng)然這種差異是PHP本身特有的,這并不適用于其他的語言,所以不需要去修改你的C或Java代碼然后去指望它們能馬山就變快,沒用的。++$i速度更快是因為它只需要執(zhí)行3條指令(opcodes),而$i++則需要4條指令。那些后置遞增實際上可以產(chǎn)生一個臨時的變量,而這個臨時變量在隨后被遞增。前置遞增則是直接在原值上遞增。這是我們最優(yōu)化處理手段的一種,就好像Zend的PHP優(yōu)化器所作的那樣。牢牢的記住這個優(yōu)化處理也不失為一個好主意,畢竟不是所有的指令在優(yōu)化器都會去做同樣的優(yōu)化處理,而且還存在大量沒有裝配指令優(yōu)化器的互聯(lián)網(wǎng)服務(wù)提供商(ISPs)以及服務(wù)器。
并不是事必面向?qū)ο?OOP),面向?qū)ο笸_銷很大,每個方法和對象調(diào)用都會消耗很多內(nèi)存。
并非要用類實現(xiàn)所有的數(shù)據(jù)結(jié)構(gòu),數(shù)組也很有用。
不要把方法細(xì)分得過多,仔細(xì)想想你真正打算重用的是哪些代碼。
當(dāng)你需要時,你總能把代碼分解成方法。
盡量采用大量的PHP內(nèi)置函數(shù)。
如果在代碼中存在大量耗時的函數(shù),你可以考慮用C擴展的方式實現(xiàn)它們。
評估檢驗(profile)你的代碼。檢驗器會告訴你,代碼的哪些部分消耗了多少時間。Xdebug調(diào)試器包含了檢驗程序,評估檢驗總體上可以顯示出代碼的瓶頸。
mod_zip可作為Apache模塊,用來即時壓縮你的數(shù)據(jù),并可讓數(shù)據(jù)傳輸量降低80%。
在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情況下,盡量用file_get_contents,因為他的效率高得多。但是要注意file_get_contents在打開一個URL文件時候的PHP版本問題;
盡量少的進(jìn)行文件操作,雖然PHP的文件操作效率也不低的;
優(yōu)化SelectSQL語句,在可能的情況下盡量少的進(jìn)行Insert、Update操作;
盡可能的使用PHP內(nèi)部函數(shù);
循環(huán)內(nèi)部不要聲明變量,尤其是大變量:對象;
多維數(shù)組盡量不要循環(huán)嵌套賦值;
在可以用PHP內(nèi)部字符串操作函數(shù)的情況下,不要用正則表達(dá)式;
foreach效率更高,盡量用foreach代替while和for循環(huán);
“用i+=1代替i=i+1。符合c/c++的習(xí)慣,效率還高”;
對global變量,應(yīng)該用完就unset()掉;
要了解更多關(guān)于PHP開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂PHP培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的PHP開發(fā)環(huán)境搭建視頻,PHP培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,通過千鋒扣丁學(xué)堂金牌講師在線錄制的
PHP開發(fā)教程,讓你快速掌握PHP從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
PHP培訓(xùn)
PHP基礎(chǔ)教程
PHP學(xué)習(xí)視頻
PHP教學(xué)視頻
PHP入門教程
PHP教程視頻
PHP在線學(xué)習(xí)
PHP在線視頻
PHP在線教程
扣丁學(xué)堂PHP培訓(xùn)
PHP編寫的經(jīng)驗