说了这么多跟性能无关的,那让我们来看下一下性能。作为一个从PHP转Java的程序员,我想测一下两种措辞在性能上的差异。不用除一些不严谨,测试结果有不准确的可能性。
做事器配置2核4G Ubuntu
JMeter

测试大略接口(只相应,啥都不干)的qps。预测:PHP接口CPU到达瓶颈,由于线程(JAVA)是比是进程(PHP)更轻量的单位,在线程中内存是可以共享的,而PHP要对每一次要求重新建立和销毁所有的工具,想想差别还是蛮大的。
java接口 @RequestMapping(path="/testt") @ResponseBody public String testt(HttpServletRequest request, HttpServletResponse response) { return "ok"; }
PHP接口
public function testt(Request $request, LiveRecordService $service) { return "ok"; }
测试结果
措辞
每秒吞吐量
均匀相应速率(ms)
CPU利用程度
PHP
227
366
100%
Java
1175
78
50%
PHP 压测结果Pasted Graphic 9.png
Java 压测结果Pasted Graphic 8.png
PHP 做事器监控Pasted Graphic 6.png
Java 做事器监控Pasted Graphic 7.png
测试2接口进行一次redis和MySQL主键查询,并返回查询数据。预期:由于Java配置了连接池,而PHP相应每个要求都建立Socket连接,三次握手,该当是有性能丢失的,由于PHP已经瓶颈了,无法验证这个结论了,展示下测试结果吧。
java @RequestMapping(path="/testt") @ResponseBody public ResponseVO testt(HttpServletRequest request, HttpServletResponse response) { MallAdmins aa = mallAdminsService.getById(57); WxUsers bb = redisService.getObject("wxUserInfo:11", WxUsers.class); return ResponseVO.responseSuc(Lists.newArrayList(aa, bb)); }
PHP
public function testt(Request $request, LiveRecordService $service) { $aa = MallAdminModel::where("id", 57)->get(); $bb = Redis::get("wxUserInfo:11"); return LiveResponse::responseSuc([$aa, $bb]); }
测试结果
措辞
每秒吞吐量
均匀相应速率(ms)
CPU利用程度
PHP
155
608
100%
Java
807
119
80%
PHP压测结果image.png
Java 压测结果image.png
PHP 做事器监控Pasted Graphic 11.png
Java 做事器监控Pasted Graphic 10.png
总结符合预期。从实际角度上,我是碰着过接口瓶颈,但末了都创造是程序员有99%的提高空间,由于在系统设计上是程序有99%的改进空间,对付我做过的运用来说PHP的性能都是可以胜任的。但如果就这样否定性能的主要性,我想怕坐井观天。性能是可以用做事器堆的,但是如果是巨大而繁芜的项目,做事器本钱到末了我相信是指数级增加的。以是,我就保持这样的不雅观点:性能,有比没有好。而对付快速开拓这种定义,PHP的Larave框架真的是蛮好的,轮子完好,PHP生态也还好,Spring的话,原生拿得手,开拓是烦懑的。不过这些都不是问题,Spring也是可以极速开拓的,如果哪天须要考虑规范规整,或者性能,那便是向下兼容。