雖然insoler社群網站目前仍在繼續使用相當老舊的2台電腦主機,分別是:
如果把這兩台Mac電腦都升級到目前最新、最強大的蘋果電腦的話?網站使用的PHP程式的執行速度又可以提升多少呢?由於某阿光愛用的MacBook Pro (Retina, 15-inch, Late 2013) 在2020年1月左右,筆記型電腦上的螢幕幾乎完全損壞,雖然可以使用HDMI外接螢幕,但這樣就會失去筆記型電腦的可攜帶性,因此買了Apple才剛剛大改款,第一次發表16吋的MacBook Pro。這台筆記型電腦的規格配備是:
我在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 秒
簡單的說:
完全相同的一台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老舊電腦呢?答案是這台筆電:
一台2009年老舊的Mac mini電腦,只有「雙核心 2.53GHz」,執行完全相同的PHP程式碼,竟然還會比2018年的「4核心 2.50 GHz」更快一倍左右,我當然就沒有理由扔掉這台仍舊老當益壯的Mac mini電腦!畢竟這台Mac mini用來擔任BNW網站主機,還非常的好用。