-gwa2 vs -thinkphp

在用 -GWA2 开发过程中,接触和了解到 -thinkphp , 一款不错的PHP开发框架。 由于并行的部署了两个框架,所以比较起来就很容易的事了,有一个可供测试的任务是,从前端的form表单中搜集一些表单项数据,然后递交到后台,进行SQL组装.

然后再将查询递交给SQL发服务器,进而返回结果,进而给前端, 这是一个较为典型和常见的Web应用。 比试的结果是,同一个HTML form的请求,-GWA2 比 -thinkphp 快了一倍以上。 测试环境是在PC上搭建的基于openSuSE的VMware虚拟机,使用 -nginx 和 -php 7.0的环境,使用 fpm 模块。 以下是一些细节及可能的解析。

performance-thinkphp-vs-gwa2-201605-003
在一组连续的5次HTTP请求中, -thinkphp 的页面处理时间为 4.5秒左右,最高到6秒多,而 -gwa2 的页面处理时间为 1.7秒左右,最高到2.7秒。 其中SQL本身的执行时间变化并不大,单独在SQL的CMD下执行,耗时约为0.5秒左右。

尝试分析其中的耗时点,可能 -thinkphp 的请求流程处理环节较为复杂,且涉及到的功能多样,如在其官方文档里描述的,每个request请求,大约有68个标准的功能模块需要处理 ( -R/b2Te )

thinkphp-routing-job

在这方面, -gwa2 并没有那么复杂,更多的功能和操作还是留给了程序开发人员去设置和调配。这可能是节省资源及开支的重要的地方。

-gwa2

-gwa2

关于PHP的性能优化,之前的一个关注和测试实验是, “php的所谓优化” ( -R/22SK   ), 文章写到, “OO思想其实有些拿性能换便利,从尊重人惰性来说,只会通过升级硬件在获得便利的同时来获取高性能。 …类写的尽量简单,尽量使用内置函数,可有效提升(550.92-179.11)/550.92 = 67.4% “.

而观察和阅读 -thinkphp 则是完全的各种面向对象的设计与实现,如果这个实验的数据可供参考,则更多的类的设计与实现,就是让业务代码距离PHP内置函数越远,从而性能上会有所折扣。 同样地,我们还使用Java语言做过类似的实验。 在 “关于log4j和Sysytem.out.println的性能比较测试” ( -R/I2SL   )文章,我们观察到 ,”log4j和System.out.println资源耗时均值比为:4.13:1 。 ”

同时也意识到, “log4j与System.out.println不具有可比性,做这个测试的目的是:论证在一个对性能要求很高的环境中,是否可以使用log4j, 也即要用数据说明,log4j的额外开销是多少?这些开销对高性能系统来说是否是值得的,或者,是否是能够承受的?” 借此,也许可以小结此文,也许追求大而全功能强大的  -thinkphp 与 -gwa2 不具有可比性。

恰好在读关于 -apache 和 -nginx 对比的文章,其中一个比喻很形象,也适用于很多场合: Apache就像是具有60K个功能的Word字处理软件一样,普通用户经常使用的也许就只有6个功能;恰好Nginx在做这6件事时,表现得较好。  

此条目发表在-GWA2, 编程技术, 计算机技术分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code