首頁 > 後端開發 > php教程 > 高效率程式設計:php的最佳化準則介紹

高效率程式設計:php的最佳化準則介紹

不言
發布: 2023-04-04 10:58:01
轉載
2525 人瀏覽過

這篇文章帶給大家的內容是關於高效率程式設計:php的最佳化準則,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

  • 少用正規表示式

#str_replace 函數比 preg_replace 快得多,strtr 函數又比 str_replace 來得快。

strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。
登入後複製
  • 字元替換

str_replace 字元替換比正規取代 preg_replace快,但 strtr 比 str_replace 又快1/ 4。

另外,不要做無謂的替換,即使沒有替換,str_replace也會為其參數分配記憶體。很慢!

用 strpos 先找(非常快),看是否需要替換,如果需要,再替換。

如果需要替換,效率幾乎相等,差異在 0.1% 左右。

如果不需要替換:用 strpos 快 200%。

  • 使用$_SERVER變數

#如果你需要得到腳本執行的時間,$_SERVER[' REQUSET_TIME']優於time()

一個是現成就可以直接用,一個還需要函數得到的結果。

  • 使用 $i遞增

##當執行變數

$i的遞增或遞減時,$i 會比 $i慢一些。

這種差異是PHP特有的,並不適用於其他語言,所以請不要修改你的C或Java程式碼,並指望它們能立即變快,沒用的。

$i更快是因為它只需要3個指令(opcodes),$i 則需要4個指令。

  • 壓縮大的字串

#使用 gzcompress() 和 gzuncompress() 對容量大的字串進行壓縮和解壓,再

存入和取出資料庫

這種內建的函數使用gzip演算法,能壓縮字串

90%

  • 讀取檔案內容

#在可以用file_get_contents()取代

file()fopen()feof()fgets()等系列方法的情況下,盡量用file_get_contents()

  • echo 輸出

#echo 字串用

逗號取代點連接符號更快些。

雖然,

echo是一種語言結構,不是真正的函數。

但是,它可以把逗號隔開的多個字串當作「函數」參數傳入,所以速度會更快。

autoload、設計不好的自動裝載函數,才會導致其效率的降低.

所以說,盡量避免使用

__autoload等魔術方法,有待商榷

  • #屏蔽敏感資訊

使用 error_reporting() 函數來預防潛在的敏感資訊顯示給使用者。

理想的錯誤報告應該完全禁用在php.ini檔案裡。

如果用的是共用虛擬主機,php.ini不能修改,最好加入 error_reporting() 函數。

放在每個腳本檔案的第一行,或用

require_once()來加載,能有效的保護敏感的SQL查詢和路徑,在出錯時不被顯示

  • 純PHP程式碼不加結束標記

#如果檔案內容是純PHP 程式碼,最好在檔案結尾刪除PHP結束標記

?>這可以避免在 PHP 結束標記之後萬一意外加入了空格或換行符,會導致 PHP 開始輸出這些空白,而腳本中此時並無輸出的意圖。

  • 永遠不要使用register_globalsmagic quotes

  • ##這是兩個很古老的功能,在當時(十年前)也許是一個好方法,但現在看來並非如此。

舊版的PHP在安裝時會預設開啟這兩個功能,這會造成安全漏洞、程式錯誤及其他的問題。

如只有使用者輸入了資料時才會建立變數等。

PHP5.4.0開始這兩個功能都被捨棄了,所以每個程式設計師都應該避免使用。

如果你過去的程式有使用這兩項功能,那就盡快將其剔除吧。

  • 使用絕對路徑

  • #在
include

require中盡量使用絕對路徑。 如果包含相對路徑,PHP會在

include_path

裡面遍歷尋找檔案。用絕對路徑就會避免這類問題,解析路徑所需的時間會更少。 <p>盡量不要用<code>require_onceinclude_once包含文件,它們多一個判斷文件是否被引用的過程,能不用盡量不用。

而使用requireinclude方法來代替。

  • 函數快於類別方法

#呼叫只有一個參數、且函數體為空的函數,花費的時間等於7-8$localvar 運算。

而相同函數的類別方法大約是15次$localvar 運算。

  •  用子類別方法

#基底類別裡面只放能重複使用的方法,其他功能盡量放在子類別中實現,子類別裡方法的效能優於在基底類別中。

  •  引用傳遞參數

#透過參數位址引用的方式,實作函數多個回傳值,這比按值傳遞效率高。方法是在參數變數前面加個 &

  • 盡量靜態化

#如果一個方法能被靜態,那就宣告它為靜態的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。

靜態和非靜態方法的效率主要差異在記憶體。靜態方法在程式開始時產生內存,實例方法(非靜態方法)在程式運行中產生記憶體。

所以,靜態方法可以直接調用,實例方法要先成生實例再調用,靜態速度很快,但是多了會佔記憶體

任何語言都是對記憶體和磁碟的操作,至於是否面向對象,只是軟體層的問題,底層都是一樣的,只是實作方法不同。

靜態記憶體是連續的,因為是在程式開始時就產生了,而實例方法申請的是離散的空間,所以當然沒有靜態方法快。

靜態方法總是呼叫同一塊內存,其缺點就是不能自動進行銷毀,而實例化可以銷毀。

以上是高效率程式設計:php的最佳化準則介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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