搜尋
首頁後端開發php教程分享4個提升腳本效能的PHP技巧

4一個可提升腳本效能上的PHP技巧上的程式碼來解決PHP技巧。但是對於其中的一些問題,我遇到了一些替代解決方案,這些解決方案特別提高了效能。

推薦:《

PHP影片教學

在本文中,我想介紹一些替代方案。如果您正在尋找可能減少生產中執行時間的可能性,這將很有用。讓我們來看看,哪種PHP方法可能會被效能更高的方法所取代,以及是否有成本或折衷的問題。

1.刪除重複項

常規

array_unique($array);

替代

array_keys(array_flip($array));

表現

方法執行時間處理時間##array_uniquearray_keysarray_flip替代方法在此測量中快1.8倍(44.87%)。平均而言,速度提高了約1.5倍(30%)。權衡:這僅適用於簡單的一維數組,因為
787.31毫秒
434.03毫秒
array_flip

用值替換了鍵。
2.取得隨機數組記錄

您有一個很大的數組,想要從中選擇一個隨機值。

常規

array_rand($array);

替代

$array[mt_rand(0, count($array) - 1)];

表現

我創建了一個包含500萬個元素的陣列。這是最佳結果:

方法執行時間處理時間##array_rand25.99微秒##0.95微秒替代方法是此測量速度快(96.33%)。平均而言,速度提高了約8倍(87%)。這個結果特別令人驚訝,因為mt_randMersenne Twister隨機數產生器的實作也是如此,並且自PHP 7.1起,內部隨機化演算法已更改為使用完全相同的演算法。
#mt_rand
27.3倍

3.測試字母數字字元
您有一個字串,要測試,如果它只包含字母數字字元。

常規

preg_match('/^[a-zA-Z0-9]+$/', $string);

替代
ctype_alnum($string);

方法

執行時間處理時間15.39毫秒2.06毫秒
##preg_match
ctype_alnum
#<p>在此测量中,替代方法快了<strong>7.5倍</strong>(86.59%)。平均而言,速度提高了约4倍(76%)。可以将相同的内容应用于<code>ctype_alpha()(检查字母字符)和ctype_digit()(检查数字字符)。

4.替换子字符串

您有一个字符串,想要用另一个子字符串替换它的一部分。

常规

str_replace(&#39;a&#39;, &#39;b&#39;, $string);

替代

strtr($string, &#39;a&#39;, &#39;b&#39;);

表现

我创建了一个包含500万个随机字符串的数组。这是最佳结果:

方法 执行时间处理时间
str_replace 676.59毫秒
strtr 305.59毫秒

另一种方法是2.2倍(54.83%)在该测量更快。平均而言,速度提高了约2倍(51%)。


其他性能改进

这是我整合到我的编码约定中的一些其他要点,发现它们可以稍微改善性能(如果适用):

  • 首选JSON比XML
  • 在循环之前而不是在循环的每个迭代中声明变量
  • 避免在循环头中进行函数调用(在每次迭代中均for ($i=0; $i<count>在<code>count()get中调用)
  • 重置内存消耗变量
  • 优先选择select语句而不是多个if语句
  • 优先于require / include而不是require_once / include_once(确保适当的操作码缓存)

最后几句话:我知道有关过早优化的讨论。我同意生产中的性能取决于瓶颈,例如数据库查询,在处理性能时应重点关注。但是我认为,如果有更快的替代方法,例如在正则表达式更易于处理和维护的情况下,为什么不使用它们呢?

最后

我们已经看到,即使使用当前的PHP 7.4(已经比以前的PHP版本快很多),也可以通过其他方法来提高脚本性能。如果您想亲自验证本文中提供的数据,我创建了一个包含所有测试的存储库:

devmount / faster-php

测试提高 PHP 脚本性能的不同方法

我使用了Bart van Hoekelen的出色工具来衡量执行时间。

转载自:Andreas

以上是分享4個提升腳本效能的PHP技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

您如何從PHP會話中檢索數據?您如何從PHP會話中檢索數據?May 01, 2025 am 12:11 AM

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

您如何使用會議來實施購物車?您如何使用會議來實施購物車?May 01, 2025 am 12:10 AM

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

您如何在PHP中創建和使用接口?您如何在PHP中創建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解釋瞭如何創建,實施和使用PHP中的接口,重點關注其對代碼組織和可維護性的好處。

crypt()和password_hash()有什麼區別?crypt()和password_hash()有什麼區別?Apr 30, 2025 pm 03:39 PM

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

如何防止PHP中的跨站點腳本(XSS)?如何防止PHP中的跨站點腳本(XSS)?Apr 30, 2025 pm 03:38 PM

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器