我個人還在使用PHP5.6,7.3的話純粹是拿來做測試的,因為PHP7已經支援強型別了,不再支援根據字串呼叫函數的方法了,所以我的個人專案的PHP版本停留在了5.6。
最近的話想折騰一下,試試PHP5.6、7.3和Tomcat7、8、9的各方面速度怎麼樣,以前看過一些文章說PHP運算元據庫的速度更快,而Java處理業務邏輯的速度更快,所以我就想業務邏輯交給Java去處理,而資料庫操作就交給PHP去處理。
但是否這樣速度就更快呢,對比一下,資料說話!
順便說一下,伺服器管理我用的是寶塔面板,服務軟體的安裝全部都是在寶塔面板中進行的。
測試前言
在測試的過程中發現Tomcat7和8.5的結果相仿,估計9也是這個結果,所以Tomcat9我就不測試了。Tomcat部分只在業務邏輯處理測試7和8.5,其餘只測試8.5
伺服器設定
● 系統:CentOS Linux 7.6.1810 (Core)
● 寶塔版本:6.9.8
● 廠商:百度智慧雲
● 型別:密集計算型ic3
● CPU:1核
● 記憶體:1GB
速度對比
業務邏輯處理速度
從0加到10000000
PHP5.6
<?php $time_start = microtime(true); $count = 0; for ($i = 0; $i < 10000000; ++ $i) { $count += $i; } $time_end = microtime(true); echo ($time_end - $time_start); // 結果:0.34648394584656
結果:0.34648394584656
PHP7.3
<?php $time_start = microtime(true); $count = 0; for ($i = 0; $i < 10000000; ++ $i) { $count += $i; } $time_end = microtime(true); echo ($time_end - $time_start); // 結果:0.12653613090515
結果:0.12653613090515
結論:PHP7.3在業務邏輯處理方面比5.6快了三倍
Tomcat7
<% java.util.Date d1 = new java.util.Date(); long start_time = d1.getTime(); // 單位:毫秒 long count = 0; for (long i = 0; i <= 10000000; ++ i) { count += i; } java.util.Date d2 = new java.util.Date(); long end_time = d2.getTime(); // 單位:毫秒 out.println(end_time - start_time); // 結果:17毫秒 %>
結果:17毫秒,多重新整理幾次就變成了4~5毫秒,主要以4毫秒為主
Tomcat8.5
結果:99毫秒,多重新整理幾次也是4毫秒
業務邏輯測試總結
畢竟Java是半編譯半解釋型的語言,速度快很正常,PHP7達到了100多毫秒的樣子,就是PHP5遜了點才300多毫秒
資料庫IO測試
使用PDO的prepare和execute進行測試
PHP5.6
● INSERT插入10000行:37.575320005417秒
● SELECT讀取10000行:0.010236978530884秒
● SELECT迴圈讀取10000行:1.0460438728333秒
● UPDATE更新10000行:0.044967889785767秒
● UPDATE迴圈更新10000行:36.463224887848秒
● DELETE刪除10000行:0.034432888031006秒
● DELETE迴圈刪除10000行:37.198384046555秒
PHP7.3
● INSERT插入10000行:33.949599027634秒
● SELECT讀取10000行:0.021260023117065秒
● SELECT迴圈讀取10000行:1.0032389163971秒
● UPDATE更新10000行:0.040410995483398秒
● UPDATE迴圈更新10000行:36.759881019592秒
● DELETE刪除10000行:0.046122074127197秒
● DELETE迴圈刪除10000行:35.682950973511秒
PHP總結:資料庫IO幾乎沒有版本差異,還有執行單條語句比迴圈執行一條語句速度快
Tomcat8.5
編譯前為第一次執行,編譯後為第二次執行
● INSERT插入10000行:編譯前:39.738秒,編譯後:37.104秒
● SELECT讀取10000行:編譯前:0.079秒,編譯後:0.028秒
● SELECT迴圈讀取10000行:編譯前:2.303秒,編譯後:1.775秒
● UPDATE更新10000行:編譯前:0.060秒,編譯後:0.040秒
● UPDATE迴圈更新10000行:編譯前:43.326秒,編譯後:40.847秒
● DELETE刪除10000行:第一次執行:0.137秒
● DELETE迴圈刪除10000行:第一次執行:40.597秒
總結:Java的業務邏輯能力強,但資料庫IO速度比PHP慢,PHP則相反。
混合開發測試
業務邏輯由Java編寫,PHP通過CURL呼叫Java,測試速度
結果:
第一次測試:0.51814317703247秒
第二次測試:0.016547918319702秒
總結:
第一次測試可能是因為Java端需要編譯而產生的時間,第二次測試則不再需要編譯,所以速度很快。
後面又進行了若干次測試,結果均比較理想,速度上比PHP7都要快10倍左右。
只不過混合開發的缺點就是開發效率不高,可能會產生比較多的坑,但執行上能各取其優。
我個人對此表示中立態度,不推薦也不反對,因為各種專案說不好可能就存在著相關需求用這種方法可能是最佳的選擇。
以上就是PHP5.6與7.3,Tomcat7與8.5的速度對比的詳細內容,更多請關注TW511.COM其它相關文章!