首頁 後端開發 php教程 50個提高php程式運作效率的方法

50個提高php程式運作效率的方法

Nov 24, 2016 pm 02:40 PM
php php程式 效率 運行

0、用單引號代替雙引號來包含字串,這樣做會更快一些。因為PHP 會在雙引號包圍的字串中搜尋變量,單引號則不會,注意:只有echo 能這麼做,它是一種可以把多個字串當作參數的「函數」(譯註:PHP 手冊中說echo 是語言結構,不是真正的函數,故把函數加上了雙引號)。
1、如果能將類別的方法定義成 static,就盡量定義成 static,它的速度會提升將近 4 倍。 2、$row[’id’] 的速度是$row[id]的 7 倍。
3、echo 比 print 快,並且使用 echo 的多重參數(譯註:指用逗號而不是句點)代替字串 連接,例如 echo $str1,$str2。
4、在執行 for 迴圈之前決定最大迴圈數,不要每迴圈一次都計算最大值,最好運用 foreach 取代。 5.註銷那些不用的變數尤其是大數組,以便釋放記憶體。
6、盡量避免使用__get,__set,__autoload。
7、require_once()代價昂貴。
8、include 檔案時盡量使用絕對路徑,因為它避免了 PHP 去 include_path 裡查找檔案的速 度,解析作業系統路徑所需的時間會更少。
9、如果你想知道腳本開始執行(譯註:即伺服器端收到客戶端請求)的時刻,使用 $_SERVER['REQUEST_TIME'] 要好於 time()
10、函數代替正規表示式完成相同功能。
11、str_replace 函數比 preg_replace 函數快,但 strtr 函數的效率是 str_replace 函數的四 倍。 12.如果一個字串替換函數,可接受數組或字符作為參數,並且參數長度不太長,那麼可以考慮額外寫一段替換代碼, 使得每次傳遞參數是一個字符, 而不是只寫一行代碼接受數組作為查詢和替換的參數。
13、使用選擇分支語句(譯註:即 switch case)優於使用多個 if,else if 語句。
14、用@屏蔽錯誤訊息的做法非常低效,極度低效。
15、開啟 apache 的 mod_deflate 模組,可以提高網頁的瀏覽速度。
16、資料庫連線當使用完畢時應關掉,不要用長連接。
17、錯誤訊息代價昂貴。
18、在方法中遞增局部變量,速度是最快的。幾乎與在函數中呼叫局部變數的速度相當。
19、遞增一個全域變數要比遞增一個局部變數慢 2 倍。
20、遞增一個物件屬性(如:$this->prop++)要比遞增一個局部變數慢 3 倍。
21、遞增一個未預先定義的局部變數比遞增一個預先定義的局部變數慢 9 至 10 倍。
22、僅定義一個局部變數而沒在函數中呼叫它,同樣會減慢速度(其程度相當於遞增一個局 部變數)。 PHP 大概會檢查看是否存在全域變數。
23、方法呼叫看來與類別中定義的方法的數量無關,因為我(在測試方法之前和之後都)添加了 10 個方法,但性能上沒有變化。
24、衍生類別中的方法運作起來要快於在基底類別中定義的同樣的方法。
25、呼叫帶有一個參數的空函數,其花費的時間相當於執行 7 至 8 次的局部變數遞增操作。 類似的方法呼叫所花費的時間接近 15 次的局部變數遞增操作。
26、Apache 解析一個 PHP 腳本的時間比解析一個靜態 HTML 頁面慢 2 至 10 倍。盡量 多用靜態 HTML 頁面,少用腳本。
27、除非腳本可以緩存,否則每次呼叫時都會重新編譯一次。引入一套 PHP 快取機制通常 可以提升 25%至 100%的效能,免除編譯開銷。
28、盡量做緩存,可使用 memcached。 memcached 是一款高效能的記憶體物件快取系統, 可用於加速動態 Web 應用程序,減輕資料庫負載。對運算碼 (OP code)的快取很有用,使 得腳本不必為每個請求做重新編譯。
29、 當操作字串並需要檢驗其長度是否滿足某種要求時, 你想當然地會使用 strlen()函數。 此函數執行起來相當快,因為它不做任何計算,只傳回在 zval 結構(C 的內建資料結構,用 於儲存 PHP 變數)中儲存的已知字串長度。但是,由於strlen()是函數,多多少少會有些慢,因為函數調用會經過諸多步驟,如字母小寫化(譯註:指函數名小寫化,PHP 不區分函數名大小寫)、哈希查找,會跟隨被呼叫的函數一起執行。在某些情況下,你可以使用 isset() 技巧加速執行你的程式碼。 (舉例如下) if (strlen($foo) 30.執行變數$i 的遞增或遞減時,$i++會比++$i 慢一些。這種差異是 PHP 特有的,並不 適用於其他語言, 所以請不要修改你的 C 或 Java 程式碼並指望它們能立即變快, 沒用的。 ++$i 比較快是因為它只需要 3 個指令(opcodes),$i++則需要 4 個指令。後置遞增實際上會產生一 個臨時變量,這個臨時變量隨後被遞增。而前置遞增直接在原值上遞增。這是最優化處理的 一種,正如 Zend 的 PHP 優化器所做的。牢記這個優化處理不失為一個好主意,因為 並不是所有的指令優化器都會做同樣的優化處理, 並且存在大量沒有裝配指令優化器的互聯 網服務提供商(ISPs)和伺服器。 31、並不是事必物件導向(OOP),物件導嚮往往開銷很大,每個方法和物件呼叫都會消耗很 多記憶體。
32、並非要用類別實作所有的資料結構,陣列也很有用。
33、不要把方法細分得過多,仔細想想你真正打算重用的是哪些代碼?
34、當你需要時,你總能把程式碼分解成方法。
35、盡量採用大量的 PHP 內建函數。
36、如果在程式碼中存在大量耗時的函數,你可以考慮用 C 擴充的方式實作它們。
37、 評估檢定(profile)你的程式碼。 檢驗器會告訴你, 程式碼的哪些部分消耗了多少時間。 Xdebug 偵錯器包含了檢驗程序,評估檢定整體上可以顯示出代碼的瓶頸。
38、mod_zip 可作為 Apache 模組,用來即時壓縮你的數據,並可讓數據傳輸量降低 80%。
39、在可以用file_get_contents 取代file、fopen、feof、fgets 等系列方法的情況下,盡量用file_get_contents,因為他的效率高得多!但是要注意file_get_contents 在開啟一個URL 檔案時候的PHP 版本問題;
40、盡量的少進行文件操作,雖然PHP 的文件操作效率也不低的;
41、優化Select SQL 語句,在可能的情況下盡量少的進行Insert、Update 操作(在update 上,我被惡批過);
42、盡可能的使用PHP 內部函數(但是我卻為了找個PHP 裡面不存在的函數,浪費了本可以寫出一個自定義函數的時間,經驗問題啊!);
43、循環內部不要宣告變量, 尤其是大變量: 物件(這好像不只是PHP 裡面要注意的問題吧?); 44、多維數組盡量不要循環嵌套賦值;
45、在可以用PHP 內部字符串操作函數的情況下,不要用正規表示式;
46、foreach 效率更高,盡量用foreach 代替while 和for 迴圈;
47、用單引號替代雙引號引用字串;
48、「用i+=1 代替i= i+1。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles