溫州溫州市分享4個(gè)提高腳本性能的PHP技巧
閱讀 87045 · 發(fā)布日期 2020-08-24 11:44 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
4個(gè)提高腳本性能的PHP技巧通常,我使用明顯的常規(guī)PHP函數(shù)編寫(xiě)代碼來(lái)解決相應(yīng)的問(wèn)題。但是對(duì)于其中的一些問(wèn)題,我遇到了一些替代解決方案,這些解決方案特別提高了性能。推薦:《PHP視頻教程》在本文中,我想介紹一些替代方案。如果您正在尋找可能減少生產(chǎn)中執(zhí)行時(shí)間的可能性,這將很有用。讓我們看看,哪種PHP方法可能會(huì)被性能更高... 【溫州小程序開(kāi)發(fā),溫州微信公眾號(hào),平陽(yáng)做網(wǎng)站,平陽(yáng)網(wǎng)站建設(shè)公司,平陽(yáng)小程序商城制作,昆陽(yáng)萬(wàn)全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號(hào),山門(mén)順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...
4個(gè)提高腳本性能的PHP技巧通常,我使用明顯的常規(guī)PHP函數(shù)編寫(xiě)代碼來(lái)解決相應(yīng)的問(wèn)題。
但是對(duì)于其中的一些問(wèn)題,我遇到了一些替代解決方案,這些解決方案特別提高了性能。
推薦:
《PHP視頻教程》在本文中,我想介紹一些替代方案。
如果您正在尋找可能減少生產(chǎn)中執(zhí)行時(shí)間的可能性,這將很有用。
讓我們看看,哪種PHP方法可能會(huì)被性能更高的方法所取代,以及是否存在成本或折衷的問(wèn)題。
1.刪除重復(fù)項(xiàng)您有一個(gè)包含重復(fù)項(xiàng)的大型數(shù)組,并且希望刪除它們,使其僅具有唯一值的數(shù)組。
常規(guī)array_unique($array);
替代array_keys(array_flip($array));
表現(xiàn)我創(chuàng)建了一個(gè)數(shù)組,其中包含超過(guò)400萬(wàn)個(gè)元素和300萬(wàn)個(gè)重復(fù)項(xiàng)。
這是最佳結(jié)果:
方法執(zhí)行時(shí)間處理時(shí)間array_unique787.31毫秒array_keys array_flip434.03毫秒替代方法在此測(cè)量中快1.8倍(44.87%)。
平均而言,速度提高了約1.5倍(30%)。
權(quán)衡:
這僅適用于簡(jiǎn)單的一維數(shù)組,因?yàn)閍rray_flip用值替換了鍵。
2.獲取隨機(jī)數(shù)組記錄您有一個(gè)很大的數(shù)組,想要從中選擇一個(gè)隨機(jī)值。
常規(guī)array_rand($array);
替代$array[mt_rand(0, count($array) - 1)];
表現(xiàn)我創(chuàng)建了一個(gè)包含500萬(wàn)個(gè)元素的數(shù)組。
這是最佳結(jié)果:
方法執(zhí)行時(shí)間處理時(shí)間array_rand25.99微秒mt_rand0.95微秒替代方法是此測(cè)量速度快27.3倍(96.33%)。
平均而言,速度提高了約8倍(87%)。
這個(gè)結(jié)果特別令人驚訝,因?yàn)閙t_randMersenne Twister隨機(jī)數(shù)生成器的實(shí)現(xiàn)也是如此,并且自PHP 7.1起,內(nèi)部隨機(jī)化算法已更改為使用完全相同的算法。
3.測(cè)試字母數(shù)字字符您有一個(gè)字符串,要測(cè)試,如果它僅包含字母數(shù)字字符。
常規(guī)preg_match('
/^[a-zA-Z0-9]+$/'
, $string);
替代ctype_alnum($string);
表現(xiàn)我創(chuàng)建了一個(gè)包含100k以上字母數(shù)字和非字母數(shù)字字符串的數(shù)組。
這是最佳結(jié)果:
方法執(zhí)行時(shí)間處理時(shí)間preg_match15.39毫秒ctype_alnum2.06毫秒在此測(cè)量中,替代方法快了7.5倍(86.59%)。
平均而言,速度提高了約4倍(76%)。
可以將相同的內(nèi)容應(yīng)用于ctype_alpha()(檢查字母字符)和ctype_digit()(檢查數(shù)字字符)。
4.替換子字符串您有一個(gè)字符串,想要用另一個(gè)子字符串替換它的一部分。
常規(guī)str_replace('
a'
, '
b'
, $string);
替代strtr($string, '
a'
, '
b'
);
表現(xiàn)我創(chuàng)建了一個(gè)包含500萬(wàn)個(gè)隨機(jī)字符串的數(shù)組。
這是最佳結(jié)果:
方法執(zhí)行時(shí)間處理時(shí)間str_replace676.59毫秒strtr305.59毫秒另一種方法是2.2倍(54.83%)在該測(cè)量更快。
平均而言,速度提高了約2倍(51%)。
其他性能改進(jìn)這是我整合到我的編碼約定中的一些其他要點(diǎn),發(fā)現(xiàn)它們可以稍微改善性能(如果適用):
首選JSON比XML在循環(huán)之前而不是在循環(huán)的每個(gè)迭代中聲明變量避免在循環(huán)頭中進(jìn)行函數(shù)調(diào)用(在每次迭代中均for ($i=0;
$i
我知道有關(guān)過(guò)早優(yōu)化的討論。
我同意生產(chǎn)中的性能取決于瓶頸,例如數(shù)據(jù)庫(kù)查詢(xún),在處理性能時(shí)應(yīng)重點(diǎn)關(guān)注。
但是我認(rèn)為,如果有更快的替代方法,例如在正則表達(dá)式更易于處理和維護(hù)的情況下,為什么不使用它們呢?最后我們已經(jīng)看到,即使使用當(dāng)前的PHP 7.4(已經(jīng)比以前的PHP版本快很多),也可以通過(guò)其他方法來(lái)提高腳本性能。
如果您想親自驗(yàn)證本文中提供的數(shù)據(jù),我創(chuàng)建了一個(gè)包含所有測(cè)試的存儲(chǔ)庫(kù):
devmount / faster-php測(cè)試提高 PHP 腳本性能的不同方法我使用了Bart van Hoekelen的出色工具來(lái)衡量執(zhí)行時(shí)間。
轉(zhuǎn)載自:
Andreas以上就是分享4個(gè)提高腳本性能的PHP技巧的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
php本文轉(zhuǎn)載于:
learnku,如有侵犯,請(qǐng)聯(lián)系[email protected]刪除
上一篇:
php array_unshift()函數(shù)詳解(實(shí)例)
下一篇:
實(shí)現(xiàn)PHP+Mysql無(wú)限分類(lèi)的方法相關(guān)文章相關(guān)視頻php技巧之PHP快速排序算法實(shí)例分析PHP遞歸寫(xiě)入MySQL實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)數(shù)據(jù)操作示例...php技巧之如何巧妙避免PHP程序中的一些壞代碼php技巧:
在實(shí)例中調(diào)用 Invoke 類(lèi)型的類(lèi)分享4個(gè)提高腳本性能的PHP技巧數(shù)據(jù)表的連接與新增操作2數(shù)據(jù)表的連接與新增操作1數(shù)組常用函數(shù)-3數(shù)組常用函數(shù)-2