今年年底,PHP-8即將發(fā)布。雖然這個(gè)主版本有很多新功能,例如聯(lián)合類型、靜態(tài)返回和弱映射等,但最令人期待的改進(jìn)還是JIT編譯器。
為遂平等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及遂平網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、遂平網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!從理論上講,JIT處理PHP腳本編譯的方式能夠提高應(yīng)用程序的速度。但讓我們來看看這種方法能否達(dá)到我們的期望。
請(qǐng)注意,在本文中使用的PHP-8不是最終版本。
首先,我們來編寫一段運(yùn)行的代碼。我選擇了冒泡排序,因?yàn)檫@是最差的排序算法,只有這種測(cè)試的時(shí)候我才能用這個(gè)排序算法。
<?php function bubble_sort($array){ $start = microtime(true); do { $sw = false; for($i = 0, $size = count($array) - 1; $i < $size; $i++) { if( $array[$i] > $array[$i + 1] ) { list( $array[$i + 1], $array[$i] ) = array($array[$i], $array[$i + 1]); $sw = true; } } } while($sw); $end = microtime(true); return $end - $start; } $array = array(1000, -202, 3, 0, 2, 77, 5, -1, 4, 34, -203, 1, 0.5 , -3, 0.88, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -201, 4000, 444, 0.99, -44, 4, 454443, -44444, 23, -201, 5000, 444, 0.99, -44, 4, 4553, -4, 253, -201, 6000, 444, 0.99, -44, 4, 443, -4, 2.3, -2.01, 39000, 444, 0.99, -44, 4, 53, -4, 23, -201, 309900, 444, 0.99, 23, 123, 453, -4, 23, -201, 309900, 444, 0.99, -4.14, 4, 453, -4, 23, -201, 309900, 444, 0.99, -4.44, 4, 453, -4, 23, -201, 30500, 1144, 0.99, -4.4, 4, 453, -4, 23, -201, -3000, -444, 0.99, -44, 4, 453, -4, 23, -1, 3000, 424, 0.19, -44, 4, 453, -4, 23, -21, 300, 454, 0.99222, -44, 4, 453, -4, 23, -20.1, 301110, 4442, 0.991, -44, 4, 453, -4, 2.443, -201, 3033300, 33444, 0.49, -44, 4, 453, -4, 2.4443, -2010000 ); echo "\n"; echo bubble_sort($array); echo "\n"; ?>
我知道這個(gè)腳本編寫的并不是很好,尤其是中間那個(gè)討厭的數(shù)組。我知道我可以生成一個(gè)隨機(jī)數(shù)組。我也知道我可以從文件中讀取這個(gè)數(shù)組。但是,我只想要一個(gè)不需要考慮其他因素的非常慢的冒泡算法。我不希望這個(gè)基準(zhǔn)測(cè)試中出現(xiàn)任何額外的干擾。
首先,我們?cè)诋?dāng)前的PHP 7.4版本中運(yùn)行腳本:
docker container run --rm -v $(pwd):/script/ php:7.4 php /script/bubble.php
運(yùn)行100次得到的平均時(shí)間為0.10253500938416秒——還不錯(cuò)。
現(xiàn)在我們?cè)赑HP-8中運(yùn)行,先不要激活JIT。
docker container run --rm -v $(pwd):/script/ martinpham/php8:fpm-extra-alpine php /script/bubble.php
同樣運(yùn)行100次的平均時(shí)間為0.098223924636841秒。老實(shí)說,這個(gè)提升不怎么明顯。
下面,我們來測(cè)試期待已久的JIT:
docker container run --rm -v $(pwd):/script/ keinos/php8-jit php /script/bubble.php
平均運(yùn)行時(shí)間為0.053637981414795秒!JIT確實(shí)很驚喜!對(duì)于像我這樣非常關(guān)注執(zhí)行時(shí)間的人來說,這簡(jiǎn)直就是一個(gè)福音。雖然單看數(shù)字你沒什么感覺(僅改善了0.04458594322秒),但換算成百分比后,就能更好地看清優(yōu)勢(shì)了:45.39%。
我想從更多的角度來對(duì)比,因此我使用了2009年的PHP-5.3版本來運(yùn)行這段代碼。
docker container run --rm -v $(pwd):/script/ php:5.3 php /script/bubble.php
平均花費(fèi)了0.64574003219604秒。比激活了JIT的PHP-8滿了0.5921020508(下降了-1,103.88)!我的天,2009年的時(shí)候我們是怎么過來的?
注意:
我選擇的腳本只有一個(gè)純粹的冒泡算法。當(dāng)然,你可以嘗試其他代碼,例如旅行推銷員問題或二叉樹。結(jié)果應(yīng)該都差不多。
正如我在文中提到的那樣,這個(gè)基準(zhǔn)測(cè)試運(yùn)行的PHP-8版本不是最終版本,因此可能最終的發(fā)行版會(huì)增添其他改進(jìn)。
我在測(cè)試結(jié)果中保留了很多位小數(shù),雖然看著很羅嗦,但我只是想盡可能做到精確。
在基準(zhǔn)測(cè)試中,我使用keinos和martinpham的docker鏡像。其實(shí)還有很多其他工具,你可以選擇自己喜歡的嘗試一下。
我運(yùn)行測(cè)試的筆記本電腦的配置為:Linux Manjaro、3 GHz Intel Core i5、32 GB RAM。在其他配置下,具體的數(shù)字可能會(huì)有所不同,但是我相信改進(jìn)結(jié)果都很相似。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:怎么提升PHP8的性能-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://aaarwkj.com/article14/coggge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、服務(wù)器托管、外貿(mào)建站、全網(wǎng)營(yíng)銷推廣、網(wǎng)站維護(hù)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容