Erlang-China

erlang 中文社区

About “Ror vs ErlyWeb perfomance”


Yariv发布了ErlyWeb vs. Ruby on Rails EC2 Performance Showdown,作为一个相当简单的测试 ErlyWeb 毫无悬念的超过 Ror 在几乎所有的性能指标上以明显的优势胜出。

这个测试尚有一些争议。首先 Ror 并没有运行在“广为流行的优化部署模式下”,也就是并没有以多 Mongrel 实例的优化方式来部署 Ror ,并不能让 R 粉折服。其次,如此简单的测试用例,所能测到的也仅仅是 web 框架的“工具集”部分,其价值也就大打折扣。

姑且不论测试数据如何评价,仅就数字而言,老实说,比我的预期是要低的。要知道,在 web 框架这一领域,开发效率无疑是最为重要的指标,其次就是人员因素。也就是说,即便你的性能比我快上 10 倍,如果我的开发效率比你高,程序员也好找,那也不能撼动我的选择。

在这些“决策敏感问题上”,和 Ror 相比,Erlyweb 的优势显然并不明显。首先 Erlang 的“晦涩语法”会吓到小朋友,其次还有“跟着 Ror 学”的背景(既然要学,为啥不学原版?)。换作我是项目开发的决策人,就为这区区 6 x 不到的性能,也决不会轻易就甘冒风险的跳到 Erlyweb 小船上来。那么, Erlyweb 还有机会么?

我觉得,还是有的。

首先 Erlyweb 尚待优化的地方还有很多。比如[这里]提到:

ErlyWeb had a hard time handling 1000 requests coming within an interval of a few seconds, so I had to lower the burst to 500 requests there. It did not have as a severe problem if one bypassed the dispatch and used raw Yaws.

不能超过 1000 个 burst request ?这毫无疑问的表明代码了在某个地方存在瓶颈,亟需解决。另外,据我之前的印象 Erlyweb 中大量依赖于 String 操作,通常来说,改为 binary 应能有所改进。如果细心优化,超过 10 x 的优势,应该可以期待(虽然不多,但毕竟也是一个数量级嘛)。

其次,一味模仿 Ror 的思路或许也是有问题的。初期,借鉴是没有问题的,但,不能止步于此,借鉴之后需要发扬。现在 Ror 的新版也已经出了[这里],新特性也是成吨。web 开发的领域很是宽广,问题域多如牛毛,与其在 Ror 最擅长的领域一路狂追,不如另辟新战场,打出自己的特色。

两点 lesson, 记下来共勉。

1。TDD很重要,不仅要做单元测试以保证代码功能,还要做性能测试以保证代码效率,就如同 Joe Armstrong 在他的书中动不动就会对两个方案来做一个性能测试比较,以作决策。当然,代码要在可读性和效率之间保持平衡,而不是充斥着 performance trick ,这是一个风格问题。
2。性能要靠数字说话,不能靠估计。如果 yariv 一开始就做了性能测试,想必一早已经解决了潜在的问题,测试结果也会更好。

jeff xiong 提出了一个《持续集成服务器》的点子——把敏捷思维引入 Erlang 的程序开发?——貌似很不错啊。





Comments



1
Author:  dogstar | Date:  December 11, 2007 | Time:  10:48 am

《持续集成服务器》是说看能否用erlang写一个持续集成环境,貌似根你说的完全不搭呀 :)

2
Author:  jackyz | Date:  December 11, 2007 | Time:  11:48 am

呵呵,是搭得比较远。不过,换句话说,如果有好用的原生工具,至少是能鼓励我这个懒人来做“持续集成”的实践。



Write a Comment

Note: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>