php提高指令碼效能的4個技巧

2021-10-24 05:31:09 字數 2382 閱讀 7067

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

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

常規

array_unique($array);

替代

array_keys(array_flip($array));

表現

我建立了乙個陣列,其中包含超過400萬個元素和300萬個重複項。這是最佳結果:

方法執行時間處理時間

array_unique

787.31毫秒

array_keys array_flip(作用是反轉陣列中的鍵名和鍵值)

434.03毫秒

替代方法在此測量中快 1.8倍 (44.87%)。平均而言,速度提高了約1.5倍(30%)。權衡:這僅適用於簡單的一維陣列,因為array_flip用值替換了鍵。

您有乙個很大的陣列,想要從中選擇乙個隨機值。

常規

array_rand($array);

替代

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

表現

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

方法執行時間處理時間

array_rand

25.99微秒

mt_rand

0.95微秒

替代方法是此測量速度快 27.3倍 (96.33%)。平均而言,速度提高了約8倍(87%)。這個結果特別令人驚訝,因為mt_randmersenne twister隨機數生成器的實現也是如此,並且自php 7.1起,內部隨機化演算法已更改為使用完全相同的演算法。

您有乙個字串,要測試,如果它僅包含字母數字字元。

常規

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

替代

ctype_alnum($string);

表現

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

方法執行時間處理時間

preg_match

15.39毫秒

ctype_alnum

2.06毫秒

在此測量中,替代方法快了 7.5倍 (86.59%)。平均而言,速度提高了約4倍(76%)。可以將相同的內容應用於ctype_alpha()(檢查字母字元)和ctype_digit()(檢查數字字元)。

您有乙個字串,想要用另乙個子字串替換它的一部分。

常規

str_replace('a','b',$string);

替代

strtr($string,'a','b');

表現

我建立了乙個包含500萬個隨機字串的陣列。這是最佳結果:

方法執行時間處理時間

str_replace

676.59毫秒

strtr

305.59毫秒

另一種方法是 2.2倍 (54.83%)在該測量更快。平均而言,速度提高了約2倍(51%)。

PHP提高指令碼效能要點

1.刪除重複項 array keys array flip array 速度比 array unique array 高於30 2.獲取隨機數組記錄 array mt rand 0,count array 1 速度比 array rand array 高於96 3.檢查字串僅包含字母數字字元 cty...

(譯)MySQL的10個基本效能技巧

原文出處 mysql的10個基本效能技巧 與所有的關聯式資料庫一樣,mysql正如一頭怪獸一般,它可能會在接到通知的一瞬間陷入停頓,讓你的應用程式陷入困境,讓你的業務處於危險之中。真是的情況是,常見的錯誤是導致mysql效能問題的根源。工作負載或配置陷阱中的一些微妙之處常常會掩蓋這些資訊,為了確保m...

優化Hypermesh指令碼效能的幾點建議

以下給出幾種優化hypermesh二次開發tcl指令碼的效能的方法。注意 下面列出的時間是在一台奔騰266mhz的計算機上使用10000次迭代的tcl命令執行時間。過程 proc 中定義的變數預設為區域性變數。有許多方法可以訪問過程作用範圍之外的變數,包括使用命令global,upvar,uplev...