前言
我个人还在使用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的速度对比的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。