Post view

最新的「PHP 7.4.4 for Windows版」竟然比「PHP 7.3.15 for Mac版」還要慢2.5倍?!

雖然insoler社群網站目前仍在繼續使用相當老舊的2台電腦主機,分別是:

Mac mini (Late 2012):擔任Web Server網站伺服器主機

  • 第3世代Intel® Core™ i7-3720QM Processor 2.6GHz四核心Intel Core i7 (6M Cache, Turbo Boost 最大可達 3.6GHz)。
  • 16GB 1600MHz DDR3記憶體。
  • Apple原廠250GB SSD固態硬碟。

MacBook Pro (Retina, 15-inch, Late 2013):擔任MySQL Server資料庫伺服器主機

  • 第4代Intel® Core™ i7-4850HQ Processor (6M Cache, up to 3.50 GHz)、2.6GHz 四核心 Intel Core i7 處理器 (Turbo Boost 可達 3.8GHz),配備 6MB 共享 L3 快取。
  • Apple原廠16GB 1600MHz DDR3主機板內建記憶體(意思是使用者無法自行更換或是升級)。
  • Apple原廠512GB SSD固態硬碟

如果把這兩台Mac電腦都升級到目前最新、最強大的蘋果電腦的話?網站使用的PHP程式的執行速度又可以提升多少呢?由於某阿光愛用的MacBook Pro (Retina, 15-inch, Late 2013) 在2020年1月左右,筆記型電腦上的螢幕幾乎完全損壞,雖然可以使用HDMI外接螢幕,但這樣就會失去筆記型電腦的可攜帶性,因此買了Apple才剛剛大改款,第一次發表16吋的MacBook Pro。這台筆記型電腦的規格配備是:

  • 第9代(9th Generation Intel® Core™ i7 Processors)Intel® Core™ i9-9980HK Processor 16M Cache, up to 5.00 GHz。2.4GHz 8 核心 Intel Core i9,Turbo Boost 最高可達 5.0GHz,配備 16MB 共享 L3 快取。
  • 主機板內建 64GB 2666MHz DDR4 記憶體。
  • Apple原廠4TB SSD固態硬碟。

我在16吋的MacBook Pro的SSD固態硬碟上設定了只有100GB的分割區,透過Boot Camp安裝最新的Windows 10 Pro專業版,然後安裝目前最新的XAMPP for Windows:

XAMPP是一個易於安裝的Apache發行版本,其中包含MariaDB、PHP和Perl。僅僅需要下載並啟動安裝程式。就這麼簡單。

XAMPP for Windows 7.2.29, 7.3.16 & 7.4.4

XAMPP的控制面板就像這樣,你可以看到我只有啟動Apache:

從網址列直接執行XAMPP內建的phpinfo.php就會看到內建的版本是目前最新的PHP 7.4.4版:

XAMPP預設php.ini並沒有開啟Zend OPcache快取模組,所以需要自己修改php.ini檔案來啟用PHP 7.4內建的Zend OPcache快取模組。

zend_extension=php_opcache.dll

[opcache]

; Determines if Zend OPCache is enabled

opcache.enable=1

; Determines if Zend OPCache is enabled for the CLI version of PHP

opcache.enable_cli=1

; If disabled, all PHPDoc comments are dropped from the code to reduce the

; size of the optimized code.

opcache.save_comments=0

; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments"

; may be always stored (save_comments=1), but not loaded by applications

; that don't need them anyway.

opcache.load_comments=0

再重新啟動XAMPP的Apache就會看到在phpinfo.php裡面多了Zend OPcache快取模組。

為了避免其他大型Windows程式影響PHP程式的測試結果,在重新開機以後,只有啟動XAMPP與Windows 10內建的Microsoft Edge瀏覽器。

我寫的speedtest1.php程式的執行時間是6.13秒!當然,測試程式的執行時間會受到一些Windows系統的影響,不過平均都需要6秒以上!

另外一個speedtest2.php程式的執行時間是6.07秒!雖然物件導向的PHP程式碼好像比較快一點,但也有比非物件導向更慢的時候。

打開Windows 10的命令提示字元模式,輸入cd c:/xampp/php。然後輸入php -v就會看到這樣的畫面:

php -v

PHP 7.4.4 (cli) (built: Mar 17 2020 13:49:19) ( ZTS Visual C++ 2017 x64 )

Copyright (c) The PHP Group

Zend Engine v3.4.0, Copyright (c) Zend Technologies

    with Zend OPcache v7.4.4, Copyright (c), by Zend Technologies

這是2020年3月17日才剛剛釋出的PHP 7.4.4最新版。當然,我也測試過重新開機,不要啟動XAMPP,直接在Windows 10的命令提示字元模式,輸入「php speedtest1.php」與「php speedtest2.php」看看執行速度會不會更快?答案是否定的不會!這是分別執行3次的結果:


MacBook Pro (16-inch, 2019):使用Windows 10 Pro

網站使用的PHP 版本:7.4.4 版

非物件導向程式,普通 PHP 副程式的執行時間:6.1584510803223 秒

非物件導向程式,普通 PHP 副程式的執行時間:6.0429999828339 秒

非物件導向程式,普通 PHP 副程式的執行時間:6.1373999118805 秒

網站使用的PHP 版本:7.4.4 版

PHP 物件導向程式執行時間:6.0713770389557 秒

PHP 物件導向程式執行時間:6.1312649250031 秒

PHP 物件導向程式執行時間:6.165069103241 秒


就算測試程式會受到Windows 10系統的影響,但是你可以看到speedtest1.php與speedtest2.php的執行時間都需要超過6秒以上!沒有一次低於6秒!

這次在升級macOS Catalina 10.15.4與PHP Version 7.3.15以後,當然要再重新測試一次!底下的測試結果,全部都是重新測試的最新結果!


Mac mini (Late 2012) :

網站使用的 PHP 版本:5.5.38 版

非物件導向程式,普通 PHP 副程式的執行時間:8.8444628715515 秒

網站使用的 PHP 版本:5.5.38 版

PHP 物件導向程式執行時間:11.346959114075 秒


Mac mini (Late 2012) :

網站使用的 PHP 版本:7.1.33 版

非物件導向程式,普通 PHP 副程式的執行時間:4.7213530540466 秒

網站使用的 PHP 版本:7.1.33 版

PHP 物件導向程式執行時間:4.7621841430664 秒

PHP 物件導向程式執行時間:4.8421759605408 秒


Mac mini (Late 2012) :

網站使用的 PHP 版本:7.3.11 版

非物件導向程式,普通 PHP 副程式的執行時間:4.184641122818 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.1889100074768 秒

網站使用的 PHP 版本:7.3.11 版

PHP 物件導向程式執行時間:4.2198650836945 秒 

PHP 物件導向程式執行時間:4.4577078819275 秒


Mac mini Server (Late 2012) :使用macOS Catalina 10.15.4

網站使用的 PHP 版本:7.3.15 版

非物件導向程式,普通 PHP 副程式的執行時間:4.1465530395508 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.3262758255005 秒

非物件導向程式,普通 PHP 副程式的執行時間:4.5892188549042 秒

網站使用的 PHP 版本:7.3.15 版

PHP 物件導向程式執行時間:4.2702870368958 秒

PHP 物件導向程式執行時間:4.5515449047089 秒


MacBook Pro (Retina, 15-inch, Late 2013):使用macOS Catalina 10.15.4

網站使用的 PHP 版本:7.3.11 版

非物件導向程式,普通 PHP 副程式的執行時間:3.8402800559998 秒

非物件導向程式,普通 PHP 副程式的執行時間:3.835391998291 秒

網站使用的 PHP 版本:7.3.11 版

PHP 物件導向程式執行時間:3.6979310512543 秒

PHP 物件導向程式執行時間:3.6964569091797 秒


MacBook Pro (16-inch, 2019):使用macOS Catalina 10.15.4

網站使用的 PHP 版本:7.3.11 版

非物件導向程式,普通 PHP 副程式的執行時間:2.6242299079895 秒

非物件導向程式,普通 PHP 副程式的執行時間:2.5578269958496 秒

網站使用的 PHP 版本:7.3.11 版

PHP 物件導向程式執行時間:2.5202388763428 秒

PHP 物件導向程式執行時間:2.5194470882416 秒


從以上的測試結果來看,很明顯目前最新的MacBook Pro (16-inch, 2019)、2.4 GHz 8核心Intel Core i9、64 GB 2667 MHz DDR4,跑出來的速度最快!執行相同的PHP程式碼(這是我自己寫的測試PHP程式碼)所需的時間最短!

不過,規格、配備完全相同的Mac mini (Late 2012) ,從PHP 5.5.38的升級到PHP 7.3.15版,執行速度竟然快了2.5倍!


網站使用的 PHP 版本:5.5.38 版

PHP 物件導向程式執行時間:11.346959114075 秒

網站使用的 PHP 版本:7.3.15 版

PHP 物件導向程式執行時間:4.5515449047089 秒


事實上,這並不只是「測試用的實驗結果」實際上並沒有快了2.5倍的感受?我在前面有提到,這是現在測試的結果,並不是引用歷史數據!

因為你看到的「網站使用的 PHP 版本:5.5.38 版」就是insoler在升級以前的版本,而且是現在的BNW會議室的版本。這是現在進行測試的結果。

讓我們再比較一下,在同一台MacBook Pro (16-inch, 2019) 筆記型電腦上的測試成績是:


MacBook Pro (16-inch, 2019):使用macOS Catalina 10.15.4

網站使用的 PHP 版本:7.3.11 版

非物件導向程式,普通 PHP 副程式的執行時間:2.5578269958496 秒

PHP 物件導向程式執行時間:2.5194470882416 秒


MacBook Pro (16-inch, 2019):使用Windows 10 Pro

網站使用的PHP 版本:7.4.4 版

非物件導向程式,普通 PHP 副程式的執行時間:6.0429999828339 秒

PHP 物件導向程式執行時間:6.0713770389557 秒


簡單的說:

  • macOS Catalina 10.15.4系統,搭載PHP 7.3.11的執行測試速度:只要2.5秒。
  • Windows 10 Pro系統,安裝PHP 7.4.4的執行測試速度:竟然要6.0秒。

完全相同的一台MacBook Pro (16-inch, 2019) 電腦上,執行完全相同的speedtest2.php測試程式,竟然是:

6.0秒 / 2.5秒 = 2.4倍!

竟然在Windows 10 Pro底下會慢了2.4倍!換句話說,如果想要跑出與macOS Catalina 10.15.4相同的速度,你需要一台比「2.4GHz 8 核心 Intel Core i9,Turbo Boost 最高可達 5.0GHz,配備 16MB 共享 L3 快取」還要更快2倍以上的電腦!目前應該是買不到這樣的電腦主機!

為什麼Windows 10的PHP執行速度竟然比macOS還要更慢很多?雖然我不知道原因是出在哪裡?但終於可以解開2年前我遇到的奇怪問題!

「物件導向程式」與「非物件導向程式」的PHP 5.5、PHP 7執行速度效能大測試!

我最近在一台2018年最新的「Acer筆記型電腦」與一台10年前老舊的Mac mini (Late 2009) Intel Core 2 Duo雙核心、8GB DDR3電腦上,比較兩台電腦執行相同的PHP程式,到底是誰比較快?答案是10年前老舊的Mac mini擊敗2018年最新的「Acer筆記型電腦」,甚至還將近2倍快!

是什麼樣的2018年的電腦,竟然會輸給2009年的Mac mini老舊電腦呢?答案是這台筆電:

  • Acer Nitro 5 Marvel’s Avengers: Infinity War Thanos Edition
  • 搭載第 7 代 Intel® Core™ i5 處理器:Intel® Core™ i5-7300HQ 處理器 4核心 2.50 GHz,6M 快取記憶體,最高 3.50 GHz
  • NVIDIA® GeForce® GTX 1050 連 4 GB 專用記憶體
  • 39.6 cm (15.6") Full HD (1920 x 1080) 16:9 IPS
  • 16 GB, DDR4 SDRAM
  • 1 TB HDD, 128 GB SSD
  • Windows 10 家用版

一台2009年老舊的Mac mini電腦,只有「雙核心 2.53GHz」,執行完全相同的PHP程式碼,竟然還會比2018年的「4核心 2.50 GHz」更快一倍左右,我當然就沒有理由扔掉這台仍舊老當益壯的Mac mini電腦!畢竟這台Mac mini用來擔任BNW網站主機,還非常的好用。

蘇言霖 2020/04/12 0 1106
Comments
Order by: 
Per page:
 
  • There are no comments yet
Rate
0 votes
Post info
蘇言霖
「超級懶貓級」社群網站站長
2020/04/12 (1446 days ago)
Actions