Post view

Dolphin 7.3.5與PHP 5.5.38、Dolphin 7.4與PHP 7.1.23執行速度效能大測試!

在「缺乏升級電腦經費」的前提下(其實是有經費預算,但只是不想淘汰還可以正常使用的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」的性能,到底是誰比較快?

測試用,事實上也是insoler正式運作的Mac mini主機

  • Mac mini (Late 2012)
  • 2.6 GHz Intel Core i7
  • 16 GB 1600 MHz DDR3

為了避免從開啟網頁來測試,還需要經過Apache處理Web Server的部分,因此最後的結論,我使用「終端機」模式,在終端機底下輸入「php test1.php」與「php test2.php」來測試PHP的執行速度。

PHP 5.5.38的測試執行速度分別是:

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

PHP 7.1.23的測試執行速度分別是:

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

在前面這篇文章,你可以看到在不升級電腦主機,不買新的電腦的情況下,就可以讓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秒)

全新安裝「Dolphin 7.3.5」與「Dolphin 7.4」

為了避免不同網頁,因為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次以上」。


Dolphin 7.3.5與PHP 5.5.38首頁的產生速度

在「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


Dolphin 7.4與PHP 5.5.38首頁的產生速度

沒有開啟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有內建的快取功能,只要設定好就可以使用,不需要另外加裝外掛模組。
  • Apache的Proxy網站快取模組。
  • PHP 7.1內建的OPcache快取。這是PHP 7以後才有內建的快取模組,只要設定好預設值就可以使用,不再需要另外加裝外掛模組。
  • Dolphin的「檔案快取」。為了避免不斷從MySQL讀取網頁資料,Dolphin的程式碼裡面有內建「檔案快取」功能,可以把MySQL資料儲存在「檔案」裡面,以便減少MySQL的讀取次數。

會需要使用「檔案快取」來快取「MySQL」資料(雖然MySQL本身也有記憶體快取功能),但如果你知道MySQL是一套「龜速等級的資料庫系統」你就會知道使用「檔案快取」來減少MySQL的讀取與搜尋資料動作,其實是非常有效,而且是很重要的一件事!

Dolphin 7.3.5與PHP 5.5.38,經過網頁檔案快取與最佳化的首頁執行速度

上面是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秒!

Dolphin 7.4與PHP 7.1.23,官方原廠版本的首頁執行速度

關閉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秒!

Dolphin 7.4與PHP 7.1.23,經過網頁檔案快取與最佳化的首頁執行速度

使用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、Dolphin 7.4與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查詢指令」畢竟還是有某種程度的「軟體極限」。

蘇言霖 2019/03/14 0 595
Comments
Order by: 
Per page:
 
  • There are no comments yet
Rate
0 votes
Post info
蘇言霖
「超級懶貓級」社群網站站長
2019/03/14 (1842 days ago)
Actions