Ruby Web框架

时间:2014-07-07 13:45:08   收藏:0   阅读:267

JGW Maxwell在2011年底做了一个 Ruby Web框架的并发处理能力测试 ,还做了node.js的对比测试。用250个并发去做压力测试,后端使用MongoDB数据库,总共跑完10万个请求,测试结果如下:

Web框架并发模型吞吐量
Rails 多进程 531 request/s
Sinatra 多进程 576 request/s
Sinatra::Synchrony 纤程 1692 request/s
Goliath 纤程 1924 request/s
Cramp Event IO 3516 request/s
node.js Event IO 3100 request/s

纤程IO模型的性能是传统多进程模型的3-4倍,而Event IO则是多进程的6-7倍。值得一提的是Ruby的Event IO框架Cramp甚至性能超过了node.js。看来并发性能差的原因并不在Ruby。

 

我们看一个 Ruby web框架请求处理性能评测 ,这个评测不访问数据库,也不测试并发性能,主要是测试框架处理URL请求路由,渲染文本,返回结果的处理速度。

 

Web框架处理速度
Rack 1570.43 request/s
Camping 1166.16 request/s
Sinatra 912.81 request/s
Padrino 648.68 request/s
Rails 291.27 request/s

 

这里我想简单介绍3个Ruby轻量级框架,性能都远远超过Rails,很适合做Web Service:

 

比较适合写Web服务接口的轻量级Web框架我推荐两个:Grape和Sinatra,两个的区别主要是:

Grape是个纯粹的写API的框架,提供了很多写API很方便的功能,用Grape写API很爽,应该是首选,他只提供json/xml/txt格式输出。

Sinatra是个相对完善点的Web框架,带有模板渲染功能,但单纯写API的话,没有Grape爽。不过如果你的API Server有可能输出HTML页面片段,需要模板功能的话,还是Sinatra更合适,否则用Grape在代码里面拼字符串还是很麻烦的事情。

Grape和Sinatra都是基于Rack之上很轻量级的封装,我做了框架处理请求速度的测试,以及多线程并发的简单测试,基本上性能差异非常小,Grape稍微快一点点,但不超过5%。

Ruby Web框架,布布扣,bubuko.com

评论(0)
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!