锁定老帖子 主题:Spring性能小测,参其它技术
精华帖 (2) :: 良好帖 (20) :: 新手帖 (0) :: 隐藏帖 (20)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-04
首先声明这些测试并不严格,全是在同一台机器(Core2 1.6,2G内存PC)上跑,DB是同一个MySQL,执行简单的单表读写操作,并发100个thread(此并发情况下各种技术基本都不会出Error),都不做缓存。数值都是取rps,具体的绝对数值没有考究的意义,不过相对一比较倒有些意思。 先用笔者前两三年一度热衷的Appfuse,测下来的结果大概在130左右; 然后直接采用Spring的三个例程,一来简单,二来Rod自制的Sample效率应当是有保证的,结果如下: 采用hibernate的petclinic:200左右; 采用ibatis的jpetstore:400左右; 采用jdbc的imagedb:750左右。 大家应该看出些门道来的吧。所以说Rod老大的确是聪明绝顶,早已预备了三种不同的性能方案,做成sample给大家采用。至于大家最后怎么用是自己的事,怪Spring就不对了,Rod真是高明! 顺便附上其它技术体系的参考值(由高到低)吧: 纯PHP:1000左右; 以快速闻名的FleaPHP:800左右; JSTL:350左右; Grails:50左右; Seam:20左右; RoR:12左右。 这下大家是不是有些总的概念了。基本规律是越偏向SQL的技术,性能越高;越偏向ORM的技术,性能越低。由此可见OO和关系DB的不匹配,不仅仅是在设计和编码上,在性能上更是个天大的问题。 差距如此之大,就连笔者也不禁怀疑起自己的测试。建议有心的同道们做一下更严格的测试以资验证。 值得一提的是,在引入DB前,JSP还是要快过PHP不少,大概是1900:1400左右,但加上DB后,JSP竟然干不过PHP,身为Java fans实在是有些愤怒。不过很久不写JSP了,但愿精于此道的同道写个更高效的,压过PHP才好。 现代主流DB在此配置下每秒钟大多能吞下500-1000条普通SQL。做为中间层,不管怎么做,还是要配得上才行。 是选择开发效率低一些,但性能高的偏SQL方案,还是选择开发效率高,但性能低的编OO方案,不同的场景有不同的回答。 但愿此文能帮助各位同道在不同的项目上能对性能-开发效率做出最好平衡的正确选择。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-06-04
lgx522 写道 JSTL:350左右; 怎么还有JSTL?是用他的sql tag吗?也很接近SQL吧? |
|
返回顶楼 | |
发表时间:2008-06-05
引用 怎么还有JSTL?是用他的sql tag吗?也很接近SQL吧?
用JSTL的sql tag是为了省事,是为了测以纯脚本写SQL方式的性能,与纯PHP相对照。 |
|
返回顶楼 | |
发表时间:2008-06-05
给ORM加上缓存再测一下呢?
|
|
返回顶楼 | |
发表时间:2008-06-05
gof95 写道 给ORM加上缓存再测一下呢?
有兴趣的同道可以试一下。 但注意一点,ORM缓存这一招也就在互联网领域有点小用处。交互性要求一高,用缓存不如不用,用户不满意啊。而现在的Web,交互性要求是越来越高了。 至于以写为主的企业应用,用缓存就是给自己找事儿。少查出一张单据,少统计一条数据,就等着客户跟你没完。 企业应用的缓存,靠的是Oracle这类高级DB,大多数操作都在内存里完成,相当快速。可惜太贵。 |
|
返回顶楼 | |
发表时间:2008-06-05
个人感觉java是偏向企业级应用的,ROR虽然有很多优点但是现在ROR在面临大型项目时确实不是很好实施。至于ORM和sql的问题,个人觉得他们各自有各自的优势和缺点只是正常的,如果ORM比sql开发快性能好,sql也就该消失了。
|
|
返回顶楼 | |
发表时间:2008-06-05
lgx522 写道 gof95 写道 给ORM加上缓存再测一下呢?
有兴趣的同道可以试一下。 但注意一点,ORM缓存这一招也就在互联网领域有点小用处。交互性要求一高,用缓存不如不用,用户不满意啊。而现在的Web,交互性要求是越来越高了。 至于以写为主的企业应用,用缓存就是给自己找事儿。少查出一张单据,少统计一条数据,就等着客户跟你没完。 企业应用的缓存,靠的是Oracle这类高级DB,大多数操作都在内存里完成,相当快速。可惜太贵。 hibernate的cache对事务支持可是很好的,不懂ORM cache就不要乱说。 |
|
返回顶楼 | |
发表时间:2008-06-05
这里有一个很完整的各个语言性能对比实验:
这是PHP v.s Java 6的 http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=php&lang2=java 这是PHP v.s Ruby的 http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=php&lang2=ruby PHP和Java在代码执行效率上来说要差2,3个数量级别,它是和Ruby在同一数量级,属于比较慢的那一种。 你说纯粹的rps JSP比不过PHP,倒不如说是servlet container比不过mod_php+apache,也就是在测试C v.s Java http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=gcc&lang2=java ---修改分割线--- 不好意思,我看错了,你是说加入DB以后的JSP比不过PHP,也就是说性能差异在DB Driver上,还是在测试C v.s Java |
|
返回顶楼 | |
发表时间:2008-06-05
其实你的测试没任何意义,性能测试需要严格的条件和基准,否则结果就是荒谬的。比方说你并没有给出完整的测试环境:测试机器有几台,数据库怎么部署,应用服务器怎么部署,Web服务器怎么部署,操作系统是什么操作系统,操作系统的参数设置,数据库链接的设置,网络设置额带宽,应用服务器的参数设置,压力测试软件是什么?测试方案是什么?report在哪里等等等等。
基于我两年的PHP部署运行经验,六年的Java部署运行经验和两年的Rails部署运行经验,常识就是就是Java的速度要远远超过PHP,而且是超过一个数量级,PHP比Rails快,但是快的很有限。Java的Servlet容器性能也要远远好于Apache的mod_php。实际上mod_php已经越来越不被推荐了,他有比较严重的性能问题。 |
|
返回顶楼 | |
发表时间:2008-06-05
robbin 写道 其实你的测试没任何意义,性能测试需要严格的条件和基准,否则结果就是荒谬的。比方说你并没有给出完整的测试环境:测试机器有几台,数据库怎么部署,应用服务器怎么部署,Web服务器怎么部署,操作系统是什么操作系统,操作系统的参数设置,数据库链接的设置,网络设置额带宽,应用服务器的参数设置,压力测试软件是什么?测试方案是什么?report在哪里等等等等。
基于我两年的PHP部署运行经验,六年的Java部署运行经验和两年的Rails部署运行经验,常识就是就是Java的速度要远远超过PHP,而且是超过一个数量级,PHP比Rails快,但是快的很有限。Java的Servlet容器性能也要远远好于Apache的mod_php。实际上mod_php已经越来越不被推荐了,他有比较严重的性能问题。 测试这种事情,本就是见仁见智。因为各种技术体系的牛人都有深钻硬挖的本事,比到极端之处,往往是不了了之。 早已声明测试是不严格的,测试所涉及的软件全是在同一台机器上跑,优化配置几乎为0,也就是只要跑得起来就成,这种测试的绝对数值,已经声明是没有意义的。 如果真有兴趣,JE不妨集合几位各技术体系的代表性牛人,在同样的硬件条件下拼一下,也许才能让大家服点气。 用意不在比试谁高谁低,而在于提醒大家关注性能问题。现在论坛上大多数帖只在关心开发效率和理论花样了,好像性能已经不再是问题了。 可惜,现实中越有用的系统访问量越大,不及早考虑性能问题,早晚是要爆掉的。 闲话:近些天发了些不对大家胃口的言论,一下子掉了不少分。此帖也快隐藏了,还是先撤了吧。不当之处敬请谅解,还是诚心祝愿大家的系统个个都能飞快。 |
|
返回顶楼 | |