前言
我個人還在使用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.04604387283 SELECT循環讀取10000 9785767秒● UPDATE循環更新10000行:36.463224887848秒● DELETE刪除10000行:0.034432888031006秒##秒##PHP7.3
● INSERT插入10000行:33.949599027634秒● SELECT讀取10000行:0.021260023117065秒:1.0032389163971秒● UPDATE更新10000行:0.040410995483398秒● UPDATE循環更新10000行:36.7598810195950 127197秒
● 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的速度對比的詳細內容。更多資訊請關注PHP中文網其他相關文章!