首頁  >  文章  >  後端開發  >  分享4個提升腳本效能的PHP技巧

分享4個提升腳本效能的PHP技巧

藏色散人
藏色散人轉載
2020-08-15 13:27:182336瀏覽

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

推薦:《

PHP影片教學

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

1.刪除重複項

您有一個包含重複項的大型數組,並且希望刪除它們,使其僅具有唯一值的數組。

常規

array_unique($array);

替代

array_keys(array_flip($array));

表現

我創建了一個數組,其中包含超過400萬個元素和300萬個重複項。這是最佳結果:

方法執行時間處理時間##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);

表現我創建了一個包含100k以上字母數字和非字母數字字串的陣列。這是最佳結果:

方法

執行時間處理時間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($array); $i)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.com。如有侵權,請聯絡admin@php.cn刪除