語言語法優(yōu)化
在程序員開發(fā)程序代碼的時候仅政,對語言語法的熟悉度以及底層實現(xiàn)原理中了解的深淺吴侦,決定了代碼的質(zhì)量央星,那么在語法及系統(tǒng)函數(shù)使用上默伍,可以從以下幾點來處理代碼的優(yōu)化問題
1碾盐、系統(tǒng)內(nèi)置函數(shù)的使用率(能使用系統(tǒng)內(nèi)置函數(shù)就使用系統(tǒng)內(nèi)置函數(shù)):能夠使用系統(tǒng)內(nèi)置函數(shù)解決的問題晃跺,絕對不要自己造輪子來實現(xiàn),但是很多面試官往往要面試者寫基礎(chǔ)算法廓旬,典型的造輪子過程哼审,造的輪子遠遠沒有系統(tǒng)內(nèi)置函數(shù)來的快
2、內(nèi)置函數(shù)的區(qū)別:PHP中有大量的內(nèi)置函數(shù)孕豹,實現(xiàn)同一業(yè)務(wù)邏輯功能,可能會有多個內(nèi)置函數(shù)來實現(xiàn)十气,不同的函數(shù)在執(zhí)行的時候励背,消耗的內(nèi)存和時間也是不同的,所以砸西,學(xué)習(xí)更多的函數(shù)底層實現(xiàn)機制叶眉,對我們開發(fā)中應(yīng)對不同的業(yè)務(wù)邏輯有這很大的作用
3、魔術(shù)方法的使用率(不是必須使用的話芹枷,建議盡可能少的使用):魔術(shù)方法的使用比起直接調(diào)用屬性或者方法要來的慢衅疙,少量的調(diào)用訪問區(qū)別看不出來大小,并發(fā)量大之后區(qū)別會越來越明顯
4鸳慈、禁用@錯誤抑制符:雖然在開發(fā)過程中某些懶程序員會拿@來抑制部分錯誤饱溢,但是,@錯誤抑制符在代碼執(zhí)行時走芋,需要編譯成PHP底層opcode來進行绩郎,那么會在錯誤抑制符前增加begin_silence進行屏蔽錯誤的拋出潘鲫,也就是將error_reporting()錯誤級別給全部屏蔽,在轉(zhuǎn)換成opcode之后會額外多出幾行代碼(可通過PHP中vld擴展來查看)
5肋杖、內(nèi)存的合理使用:雖然PHP有自己的垃圾回收機制溉仑,但是,在代碼中我們能夠隨時處理那些不使用的變量時状植,內(nèi)存會大大的節(jié)省下來浊竟,當然,unset()也會有搞不定的時候津畸,盡可能讓自己在開發(fā)過程中釋放內(nèi)存
6振定、正則表達式:正則表達式雖然可以幫助我們解決很多問題,但是正則寫的好與壞洼畅,是否進行全文匹配吩案,都對PHP性能有影響,當然帝簇,隨著我們開發(fā)時間的深入以及對PHP的學(xué)習(xí)徘郭,對于正則的使用會越來越熟練,寫出的表達式也越來越符合標準
7丧肴、避免循環(huán)運算:對于新手來說残揉,做一個for或者while循環(huán)的時候,經(jīng)常會出現(xiàn)以下這種情況
$arr = [1,2,3,4];
for( $i = 0; $i < count($arr); $i++){
//do something
}
對于刪除線中的問題建議直接杜絕芋浮,本身循環(huán)就會消耗很大的資源抱环,在加上運算,資源消耗更加龐大
8纸巷、減少密集型運算:相比起其他語言來說镇草,個人認為PHP更加適合做一個紐帶的作用,而不是實現(xiàn)大量密集型業(yè)務(wù)處理瘤旨,比如大量讀寫文件梯啤,項目中多會有錯誤日志的處理,如果自己造輪子來實現(xiàn)存哲,往往性能很差因宇,不妨交給C來做!雖然我們PHP技術(shù)大牛很多情況下模擬多進程來搞定祟偷。察滑。。修肠。贺辰。。
9、訪問數(shù)組元素中引號區(qū)別:對于數(shù)組的訪問魂爪,嚴格使用$arr["key"]來進行先舷,因為如果key不加引號的話,系統(tǒng)會先去找常量中有沒有key滓侍,如果有蒋川,使用常量,沒有撩笆,才會從數(shù)組中來找對應(yīng)的下標