[討論] 拎上您的雞排可樂,看小弟以php8戰php7 - 討論區

[討論] 拎上您的雞排可樂,看小弟以php8戰php7

文章瀏覽次數 1712 文章回覆數 3

Dack

Dack圖像(預設)

2021-10-31 08:14:05

From:219.70.166.106

如果您是位對非微軟體系的後端技術虔心鑽研者,本篇文章要講的主角您應該不陌生—php。
這個玩一兒跟Python一樣是個程式語言,專門用來開發網路應用的它誕生在第一次資訊革命的1990年代。小自公司內部系統,大到Facebook甚至純粹restful API;只要是跟網路後端系統有關的領域,php大概就會出現。像我們這個「NVDA 台灣」,也是以php開發而成的。由於有人稱它personal home page、Hypertext Preprocessor、Pre-hypertext Processor、因而得php之名。關於php到底是怎麼回事,以後有機會小弟願貢獻自己的棉薄學識專門搞個php教學系列文跟大家分享分享。
今天小弟想要特別談談的,是自己玩了玩php 8 JIT後的小小小成果。當然了,畢竟自己沒看過php的原始碼,可能這樣玩並不那麼正確。如果有哪位大大玩得更high也歡迎指正。

先說說JIT

我們先倒帶倒帶,回到php_v8問世的將近一年前。它剛生出來的時候小弟本來沒怎麼注意它的,反正就升級改版加點新特性新語法而已,有什麼?不過就是眾多新特性裡,有個在手冊裡特別標明的項目「JIT」有點引人興趣。
JIT其實已經在程式設計的江湖流傳好一陣子了,它是鼎鼎大名的程式語言Java之編譯器是也。就是因為它,Java程式執行起來得以匹敵C++的運行效能(迷之音:看來Oracle公司真有兩下子!雖號稱矽谷養老院,不過不得不佩服您們維護JIT的團隊)。竟然斗膽標榜JIT,小弟好奇起相對php_v7,php_v8可以有多少的運作速度提升幅度?

測試開始

環境介紹

要測試(或說做實驗)就得控制好一定的變數,小弟將在統一的硬體配置及作業系統下進行。以下是本次測試用主機諸元:

  • CPU: Intel Core i3-6100
  • memory: 4GB
  • HDD: Kingstom SSD
  • OS: Windows 7 x64
  • php7_version: php_v7.4.22 nts
  • php8_version: php_v8.0.12 nts

測試演算法

說演算法好像有點太高級了,其實也就如下幾行程式碼。

<?php

$i = 0;
$t1 = time();
while($i < 2000000001){
	$i++;
}
$t2 = time();
echo $t2 - $t1;

另外如果您稍微學過資訊系統的知識,大概會知道通常為了讓運作速度越來越快,很多程式都會實作排程或快取的機制。我們的Windows作業系統當然也不例外了,這也就是為什麼同一支程式,我們第二次以後的開啟速度會比第一次打開它的速度還快的原因。
為了不讓系統的加速機制影響到本次的戰局,小弟統一在一開機的時候做測試。而且從頭到尾只餵一次程式碼給php7及php8。

測試結果展示

執行之後效果如何呢?咱來見識見識。

  • php7: 16秒
  • php8: 10秒

雖然只是粗淺的、玩玩看的態度來搞,不過在看到以上數值後小弟是又驚訝又小失望。
本來想說都標示上JIT了,還以為php8可以跟Java或C++一樣在3秒左右執行完上面的程式碼。好像有點太強人所難了XDDD。不過相對php7,我們可以初步看到php8竟然有三分之一左右的效能提升。
縱使因為JIT這個詞彙,令人對php8的執行效能產生了錯誤的期待。當然啦!可能只有小弟這麼覺得。不過可以有三分之一的性能抬升,也可以說相當難得了。並且雖手邊沒有php5能夠再做測試,但聽說php7相對php5其實也有一定程度的性能拉升。對於php團隊不斷最佳化執行效能一事,本文最後順道予以肯定與致敬。
※最後更新時間:2021-10-31 08:16:51 From:219.70.166.106 By:Dack
※最後更新時間:2021-10-31 08:20:35 From:219.70.166.106 By:Dack

留言

#1

小羔羊

小羔羊圖像(預設)

2021-10-31 19:36:17

From:114.34.171.78

其實我更期待python之婦未來能把python優畫到什麼地步,
聽說在github搞了個python加速計畫,預期目標是達到目前幾倍的效能

#2

特種兵

特種兵圖像(預設)

2021-11-02 10:08:23

From:211.23.21.202

有兩個地方請再確認一下:

  • kingstom 應該是 kingston
  • 主機諸元 是資源嗎?還是什麼?

#3

阿慶

阿慶圖像

2021-11-02 13:53:11

From:211.23.21.202

諸元,應該是要說每一個元件吧?
但說真的沒人這樣用餒,而且會讓人看不懂。