在「缺乏升級電腦經費」的前提下(其實是有經費預算,但只是不想淘汰還可以正常使用的3台Mac mini主機),如果在一台配備規格完全相同的Mac mini (2012) 電腦上,安裝舊版的「Dolphin 7.3.5與PHP 5.5.38」與目前最新版本的「Dolphin 7.4與PHP 7.1.23」(雖然不是最新的PHP 7.3版),再進行「網頁開啟速度」的比較,到底是舊的「Dolphin 7.3.5」比較快?還是新的「Dolphin 7.4」會更快?
通常「最新的版本」的意思是:功能最新、功能最多、安全性最好、問題最少。但是「最新的版本」有時候會有「向下相容」的問題,還會同時有「功能更多」所以「執行速度更慢」的問題!不花一點時間仔細測試比較,只是靠「理論上」來猜測執行速度,就非常的不好,也很不「科學」。至少在「電腦科學」上,很多人還是喜歡靠「跑分App」「測試程式」來評估電腦的性能。
同樣的,我也希望可以測試「Dolphin 7.3.5」與「Dolphin 7.4」的性能,到底是誰比較快?
為了避免從開啟網頁來測試,還需要經過Apache處理Web Server的部分,因此最後的結論,我使用「終端機」模式,在終端機底下輸入「php test1.php」與「php test2.php」來測試PHP的執行速度。
PHP 5.5.38的測試執行速度分別是:
PHP 7.1.23的測試執行速度分別是:
在前面這篇文章,你可以看到在不升級電腦主機,不買新的電腦的情況下,就可以讓PHP的執行速度提升1.8倍到2倍左右!
「物件導向程式」與「非物件導向程式」的PHP 5.5、PHP 7執行速度效能大測試!
由於現代的CMS網站系統全部都是使用「物件導向程式設計」,沒有一個網站程式不使用class的「非物件導向程式設計」,因此「非物件導向程式,普通 PHP 副程式的執行時間」就全部略過不計。這是在Web網頁上執行test1.php與test2.php測試程式的執行結果:
PHP 5.5.38物件導向程式執行時間:5.87秒。(終端機模式是5.81秒)
PHP 7.1.23物件導向程式執行時間:3.17秒。(終端機模式是2.32秒)
為了避免不同網頁,因為MySQL資料量不同,影響網頁的開啟速度,而且不同的PHP版本的執行速度也不同,所以我在比較老舊的Mac mini (Late 2009) 只有搭載Intel Core 2 Duo 2.53GHz處理器、最多8GB DDR3記憶體的電腦上,安裝全新、完全是BOONEX原廠標準版本的「Dolphin 7.3.5」與「Dolphin 7.4」。
由於老舊的Mac mini (Late 2009) 只能安裝OS X El Capitan 10.11.6版,因此也只能使用老舊的內建PHP 5.5.38。雖然是這樣,我想應該也沒有關係,因為BOONEX宣稱「Dolphin 7.4」可以安裝在PHP 5.4以上的電腦上。所以PHP 5.5.38絕對可以正常安裝,正常執行才對。實際安裝過之後,確定BOONEX的說明並沒有錯誤。「Dolphin 7.4」確實是可以在PHP 5.5.38以及大改版的PHP 7.1.23上正常安裝執行。
但是在「28th of March 2018」發表的「Dolphin 7.3.5 Released」就無法在PHP 7.1.23上安裝,只能用在PHP 5.5.38。
為了避免開啟網頁的內容不同,影響測試的結果,因此我只有測試「index.php」的首頁的開啟時間。通常「網頁開啟時間」還會受到網路頻寬、網路流量(是否流量很大導致網路塞車)等因素,所以我只有測試「「index.php」首頁的產生時間。而且為了避免只有「不斷開啟首頁」被Web Server內建的Proxy快取影響實際的測試結果。每次點選「首頁」以後,都會故意點選其他的版面,例如相簿、聲音、影片、檔案、新聞、雜誌等版面,再點選「首頁」。而且是「重複測試10次以上」。
在「The Zend OPcache extension does not appear to be installed」沒有開啟OPcache快取時,首頁的產生時間是:
2019-03-13 09:41:37 PHP 程式的執行時間:0.45264387130737
2019-03-13 09:41:48 PHP 程式的執行時間:0.44478011131287
2019-03-13 09:41:59 PHP 程式的執行時間:0.42659187316895
2019-03-13 09:42:37 PHP 程式的執行時間:0.45672297477722
2019-03-13 09:42:55 PHP 程式的執行時間:0.43147206306458
2019-03-13 09:43:23 PHP 程式的執行時間:0.39392709732056
2019-03-13 09:43:42 PHP 程式的執行時間:0.38822412490845
2019-03-13 09:44:31 PHP 程式的執行時間:0.40272307395935
2019-03-13 09:44:46 PHP 程式的執行時間:0.3952260017395
2019-03-13 09:45:11 PHP 程式的執行時間:0.39275979995728
開啟OPcache快取的首頁產生時間是:
2019-03-13 09:50:12 PHP 程式的執行時間:0.19423294067383
2019-03-13 09:50:26 PHP 程式的執行時間:0.18233609199524
2019-03-13 09:50:35 PHP 程式的執行時間:0.18708395957947
2019-03-13 09:51:24 PHP 程式的執行時間:0.18847584724426
2019-03-13 09:51:34 PHP 程式的執行時間:0.18239307403564
2019-03-13 09:52:06 PHP 程式的執行時間:0.19208192825317
2019-03-13 09:52:37 PHP 程式的執行時間:0.18464088439941
2019-03-13 09:53:02 PHP 程式的執行時間:0.17743110656738
2019-03-13 09:53:15 PHP 程式的執行時間:0.1818859577179
2019-03-13 09:53:34 PHP 程式的執行時間:0.20226216316223
沒有開啟OPcache快取時,首頁的產生時間是:
2019-03-13 09:37:54 PHP 程式的執行時間:0.98637700080872
2019-03-13 09:41:07 PHP 程式的執行時間:0.62473511695862
2019-03-13 09:41:32 PHP 程式的執行時間:0.64514589309692
2019-03-13 09:41:43 PHP 程式的執行時間:0.6331160068512
2019-03-13 09:41:54 PHP 程式的執行時間:0.56141185760498
2019-03-13 09:42:17 PHP 程式的執行時間:0.55795001983643
2019-03-13 09:42:24 PHP 程式的執行時間:0.59040689468384
2019-03-13 09:43:06 PHP 程式的執行時間:0.59488797187805
2019-03-13 09:43:30 PHP 程式的執行時間:0.59288907051086
2019-03-13 09:43:53 PHP 程式的執行時間:0.58308482170105
開啟OPcache快取的首頁產生時間是:
2019-03-13 09:49:53 PHP 程式的執行時間:0.29397511482239
2019-03-13 09:50:03 PHP 程式的執行時間:0.27236390113831
2019-03-13 09:50:17 PHP 程式的執行時間:0.30186104774475
2019-03-13 09:50:31 PHP 程式的執行時間:0.26109719276428
2019-03-13 09:51:27 PHP 程式的執行時間:0.27884006500244
2019-03-13 09:52:11 PHP 程式的執行時間:0.26681995391846
2019-03-13 09:52:34 PHP 程式的執行時間:0.28087091445923
2019-03-13 09:52:46 PHP 程式的執行時間:0.27772998809814
2019-03-13 09:52:59 PHP 程式的執行時間:0.28456401824951
2019-03-13 09:53:09 PHP 程式的執行時間:0.28494691848755
分別在「Dolphin 7.3.5」與「Dolphin 7.4」測試開啟「index.php」首頁10次的產生時間,你可以看到結論是:
「Dolphin 7.4」比「Dolphin 7.3.5」更慢許多!
由於正式運作的網站不可能不開啟「OPcache快取」,所以只看「開啟PHP快取」(OPcache並非網頁快取,而是快取PHP程式碼)的部分,執行速度分別是:
Dolphin 7.3.5:PHP 5.5.38程式的執行時間:0.18秒。
Dolphin 7.4.0:PHP 5.5.38程式的執行時間:0.26秒。
非常明顯,在「Dolphin 7.4」的「index.php」首頁的執行時間,無論重複測試幾次,都無法低於0.2秒!
無論如何,這只是在Mac mini (2009) 老舊電腦上的測試結果。並不是insoler網站實際運作的電腦主機。因此我必須在insoler正式運作的Mac mini (2012) 電腦上進行相同的測試。
要說明的是,一個網站上通常會有「多層快取」來提升處理速度與縮短反應時間:
會需要使用「檔案快取」來快取「MySQL」資料(雖然MySQL本身也有記憶體快取功能),但如果你知道MySQL是一套「龜速等級的資料庫系統」你就會知道使用「檔案快取」來減少MySQL的讀取與搜尋資料動作,其實是非常有效,而且是很重要的一件事!
上面是Mac mini (2009) 電腦的安裝全新網站(沒有內容)的測試結果。底下是在Mac mini (2012) 電腦上測試升級以前的insoler網站的首頁的執行速度:
請注意:有開啟「OPcache快取」。
2019-03-02 12:16:44 PHP 程式的執行時間:0.091201066970825
2019-03-02 12:17:36 PHP 程式的執行時間:0.063004016876221
2019-03-02 12:22:29 PHP 程式的執行時間:0.07542085647583
2019-03-02 12:41:11 PHP 程式的執行時間:0.083317041397095
2019-03-02 12:41:36 PHP 程式的執行時間:0.067587852478027
2019-03-02 12:46:58 PHP 程式的執行時間:0.096457004547119
2019-03-02 12:47:13 PHP 程式的執行時間:0.078622102737427
2019-03-02 12:47:20 PHP 程式的執行時間:0.064793109893799
2019-03-02 12:47:20 PHP 程式的執行時間:0.056115865707397
你可以看到「index.php」網站首頁的執行時間,全部都低於0.1秒,最慢的成績也是0.09秒!
關閉OPcache快取:
2019-03-02 12:43:55 PHP 程式的執行時間:2.5422630310059
2019-03-04 01:30:13 PHP 程式的執行時間:5.2269809246063
2019-03-04 01:30:43 PHP 程式的執行時間:2.9210429191589
2019-03-04 01:37:00 PHP 程式的執行時間:2.7290990352631
2019-03-04 01:37:43 PHP 程式的執行時間:4.6564788818359
2019-03-04 01:46:48 PHP 程式的執行時間:2.6070811748505
2019-03-04 01:53:30 PHP 程式的執行時間:2.4994158744812
使用OPcache快取:
2019-03-02 12:37:05 PHP 程式的執行時間:2.4356229305267
2019-03-02 12:38:11 PHP 程式的執行時間:2.4009609222412
2019-03-02 12:39:25 PHP 程式的執行時間:2.4164040088654
2019-03-02 12:40:47 PHP 程式的執行時間:2.7897439002991
2019-03-02 12:42:00 PHP 程式的執行時間:2.4727890491486
請不要懷疑你的眼睛!前面在Mac mini (Late 2009) 的10年前老舊電腦上的測試成績,只要0.26秒:
Dolphin 7.4.0:PHP 程式的執行時間:0.26秒。
為什麼反而在Mac mini (Late 2012) 更快2-3倍的電腦上,反而會跑出2.4秒~5.2秒的成績?這是因為最前面的測試是「安裝全新的Dolphin網站」。資料庫幾乎都是空的,沒有任何一篇文章。因此執行速度才可以達到「0.26秒」!
但是我在前面有提到「MySQL是超級龜速的資料庫系統」你可以看到在正式的insoler網站上,由於網站的首頁有許多照片、討論話題、部落格文章等,因此光是網站的首頁的執行時間,就會變成2.4秒~5.2秒的成績!這個成績還是跑在相當快的「PHP 7.1.23」的程式上,如果是更慢許多的「PHP 5.5.38」的話,絕對會跑的比2.4秒~5.2秒還要更慢許多的成績!
所以,你可以看到事實上我在「Dolphin 7.3.5與PHP 5.5.38」已經做了非常多的努力,想辦法把「index.php」首頁的執行速度從2.4秒~5.2秒,提高到只需要不到0.1秒!
使用OPcache快取:
2019-03-13 17:53:07 PHP 程式的執行時間:0.13816905021667
2019-03-13 17:58:24 PHP 程式的執行時間:0.20342016220093
2019-03-13 17:58:33 PHP 程式的執行時間:0.17287302017212
2019-03-13 18:03:26 PHP 程式的執行時間:0.16960692405701
2019-03-13 18:05:35 PHP 程式的執行時間:0.17753601074219
2019-03-13 18:09:34 PHP 程式的執行時間:0.1258339881897
2019-03-13 18:09:42 PHP 程式的執行時間:0.10741496086121
2019-03-13 18:11:26 PHP 程式的執行時間:0.12443804740906
2019-03-13 18:17:46 PHP 程式的執行時間:0.16467905044556
2019-03-13 18:22:20 PHP 程式的執行時間:0.10928201675415
2019-03-13 18:27:17 PHP 程式的執行時間:0.077421903610229
2019-03-13 18:31:24 PHP 程式的執行時間:0.079751968383789
2019-03-13 18:32:09 PHP 程式的執行時間:0.11200404167175
2019-03-13 18:50:33 PHP 程式的執行時間:0.10203194618225
2019-03-13 18:55:20 PHP 程式的執行時間:0.10193705558777
2019-03-13 18:59:55 PHP 程式的執行時間:0.15951704978943
2019-03-13 19:02:02 PHP 程式的執行時間:0.085377931594849
2019-03-13 19:09:12 PHP 程式的執行時間:0.11158204078674
2019-03-13 19:14:47 PHP 程式的執行時間:0.078015089035034
2019-03-13 19:17:38 PHP 程式的執行時間:0.078833103179932
2019-03-13 19:27:11 PHP 程式的執行時間:0.092108011245728
2019-03-13 19:28:23 PHP 程式的執行時間:0.075368165969849
2019-03-13 19:44:21 PHP 程式的執行時間:0.087968111038208
2019-03-13 19:44:21 PHP 程式的執行時間:0.08812403678894
2019-03-13 20:04:10 PHP 程式的執行時間:0.14988017082214
2019-03-13 20:07:21 PHP 程式的執行時間:0.095337152481079
2019-03-13 20:08:51 PHP 程式的執行時間:0.089071989059448
2019-03-13 20:09:13 PHP 程式的執行時間:0.11159110069275
在舊的Dolphin 7.3.5版本的「index.php」網站首頁的執行時間,全部都低於0.1秒,最慢的成績也是0.09秒!但是升級到Dolphin 7.4以後,似乎就比較慢一點,常常高於0.1秒,有時候還會看到「0.20秒」這樣的數字!
事實上我在Dolphin 7.3.5大幅修改了超過360行程式碼,所以才有辦法讓首頁的執行速度從2.4秒~5.2秒,提高到只需要不到0.1秒!因此,從「Dolphin 7.3.5最佳化版本」升級到「Dolphin 7.4官方版本」的時候,當然又會回到2.4秒~5.2秒的往日時光...
光是開啟首頁就要等2.4秒~5.2秒的話,我想沒有人有這些耐性。因此我在升級到「Dolphin 7.4官方版本」之後,又花了許多時間,同樣大幅修改了超過470行程式碼,終於讓insoler的首頁執行速度可以相當於舊版的「Dolphin 7.3.5與PHP 5.5.38最佳化版本」。
簡單的說,「Dolphin 7.3.5與PHP 5.5.38最佳化版本」由於PHP 5.5.38的執行速度比PHP 7.1更慢將近2倍,因此如果是可以執行「Dolphin 7.3.5與PHP 7.1.23最佳化版本」的話(實際上不可能,舊的海豚7.3.5只能在PHP 5.5上執行),我相信insoler首頁的執行時間,應該會比0.1秒還要更快!甚至只要0.05秒以下!
但是更複雜的Dolphin 7.4的PHP程式碼,完全抵消了PHP 7.1比PHP 5.5更快2倍的優勢!
Dolphin 7.3.5:PHP 5.5.38程式的執行時間:0.18秒。
Dolphin 7.4.0:PHP 5.5.38程式的執行時間:0.26秒。
使得就算是「Dolphin 7.4.0:PHP 7.1.23」經過最佳化以後,也只能盡量跑出0.1秒〜0.2秒左右的成績。如果想要把insoler首頁的執行時間縮短到只有0.05秒以下,我想大概只能依靠「更換全新的電腦主機」才有辦法辦到。
只靠「開啟OPcache快取」以及「最佳化PHP程式碼」「最佳化MySQL查詢指令」畢竟還是有某種程度的「軟體極限」。