語言語法優化
在程序員開發程序代碼的時候,對語言語法的熟悉度以及底層實現原理中了解的深淺,決定了代碼的質量,那么在語法及系統函數使用上,可以從以下幾點來處理代碼的優化問題
1、系統內置函數的使用率(能使用系統內置函數就使用系統內置函數):能夠使用系統內置函數解決的問題,絕對不要自己造輪子來實現,但是很多面試官往往要面試者寫基礎算法,典型的造輪子過程,造的輪子遠遠沒有系統內置函數來的快
2、內置函數的區別:PHP中有大量的內置函數,實現同一業務邏輯功能,可能會有多個內置函數來實現,不同的函數在執行的時候,消耗的內存和時間也是不同的,所以,學習更多的函數底層實現機制,對我們開發中應對不同的業務邏輯有這很大的作用
3、魔術方法的使用率(不是必須使用的話,建議盡可能少的使用):魔術方法的使用比起直接調用屬性或者方法要來的慢,少量的調用訪問區別看不出來大小,并發量大之后區別會越來越明顯
4、禁用@錯誤抑制符:雖然在開發過程中某些懶程序員會拿@來抑制部分錯誤,但是,@錯誤抑制符在代碼執行時,需要編譯成PHP底層opcode來進行,那么會在錯誤抑制符前增加begin_silence進行屏蔽錯誤的拋出,也就是將error_reporting()錯誤級別給全部屏蔽,在轉換成opcode之后會額外多出幾行代碼(可通過PHP中vld擴展來查看)
5、內存的合理使用:雖然PHP有自己的垃圾回收機制,但是,在代碼中我們能夠隨時處理那些不使用的變量時,內存會大大的節省下來,當然,unset()也會有搞不定的時候,盡可能讓自己在開發過程中釋放內存
6、正則表達式:正則表達式雖然可以幫助我們解決很多問題,但是正則寫的好與壞,是否進行全文匹配,都對PHP性能有影響,當然,隨著我們開發時間的深入以及對PHP的學習,對于正則的使用會越來越熟練,寫出的表達式也越來越符合標準
7、避免循環運算:對于新手來說,做一個for或者while循環的時候,經常會出現以下這種情況
$arr = [1,2,3,4];
for( $i = 0; $i < count($arr); $i++){
//do something
}
對于刪除線中的問題建議直接杜絕,本身循環就會消耗很大的資源,在加上運算,資源消耗更加龐大
8、減少密集型運算:相比起其他語言來說,個人認為PHP更加適合做一個紐帶的作用,而不是實現大量密集型業務處理,比如大量讀寫文件,項目中多會有錯誤日志的處理,如果自己造輪子來實現,往往性能很差,不妨交給C來做!雖然我們PHP技術大牛很多情況下模擬多進程來搞定。。。。。。
9、訪問數組元素中引號區別:對于數組的訪問,嚴格使用$arr["key"]來進行,因為如果key不加引號的話,系統會先去找常量中有沒有key,如果有,使用常量,沒有,才會從數組中來找對應的下標