也谈RoR的性能
September 15th, 2006 by
savage
在Ruby on Rails的世界里,性能永远是一个讨论的焦点。今天看到Joel的一篇”Ruby Performance Revisited“的文章,正好也结合我们的一些实际经验谈一点关于RoR的性能。
有两点是大家公认的:
1) Ruby确实很慢:有人说它比Java慢10倍,在”Computer Language Shootout Benchmarks“里面差距更是明显。
2) Rails的框架使得开发效率很高:据说能比Java快10倍(这个我保留,不过我们从学习开始到网站第一个版本上线的时间确实证实了RoR的开发效率)
那么这两点对于网站开发的影响到底有多大呢?
1) Ruby的性能问题确实限制了它的应用,但是网站的大部分功能不需要大量CPU运算,Joel列举了几个耗费CPU的操作,所得到的结果基本上是性能不可接受。但是从类似发生网的网站性能来看,页面cache机制是提高性能的首要环节,Rails提供了灵活方便的cache管理,程序员可以通过良好的设计使动态页面生成的操作大大减少。而动态页面生成也主要是数据库和IO操作,这个过程中,RoR更像是一个粘合剂,轻松地把各个部分串联起来,而本身不需要太多的复杂运算。对于大量依赖CPU的操作,可行的方案是单独用其他语言优化,跟用汇编优化C++代码的关键部分是一样的。
2) Rails的开发效率对于网站开发非常有利。RoR能够淋漓尽致地发挥Agile的特点,通过快速原型,不断细化,随需应变的策略,适合网站开发快速Release的要求。发生网由两个人在业余时间开发,从最初的idea,学习RoR到初始版本的内测,只花了两个月。
在Joel的文章里面提到已经有基于Rails的网站支持每天百万个动态页面浏览了。希望发生网也能很快达到这个数量,给国内的RoR网站们更多的信心。
Posted in RoR技术 |
November 17th, 2006 at 6:03 pm
非常同意,Rails的确是web开发的利器,对于web开发来说,有很多定性的特性和流程,几乎所有重大的web开发特性,Rails都做了优化处理,这种优化处理除了考虑性能,最重要的是考虑开发的简洁和快速,ROR简直就是为web开发贴身定制的小棉袄。:)
Rails最重要的原则就是DRY-Don’t repeat yourself-在这样的原则下,基本上没有重复的代码。这一点就比JAVA好太多了。
另外的一个原则就是约定俗成重于配置,在所有的开发配置方面,Rails已经根据MVC原则配置好了,如果不是特殊的应用的话,用缺省配置基本上不用修改了。这点想想稍大一点项目,JAVA那个几千行的XML配置文件,就觉得Rails真是英明。XML文件非常难以管理,而且不做类型检查,要重构非常麻烦。
第三个,也是很重要的,Rails的test做的非常好,敏捷开发的重点就是测试,Rails内部集成测试环境,只需要写几行代码,就可以跑测试流程,想想JAVA要mock一个对象那个麻烦。
推荐一个不错的Ruby On Rails的中文网站,http://www.javaeye.com 里面的ROR社区很活跃,这个网站也是用ROR写的,可以去看看。
November 17th, 2006 at 6:16 pm
另外推荐一篇讲ROR性能讨论的文章:http://www.javaeye.com/topic/32598