BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Ruby性能综述:Ruby 1.9.1在实际应用中的性能、GC vs EventMachine及Ruby编译器

| 作者 Werner Schuster 关注 9 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2009年5月13日. 估计阅读时间: 2 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

使用Ruby 1.9.1的一个重要原因就是其显著提高的性能。新的基准结果来自于现有的应用并比较了1.8.x、JRuby及1.9.1

我们将Acunote(在线的企业项目管理和Scrum软件)移植到了JRuby和Ruby 1.9上并运行了性能基准测试集。

Ruby 1.9.1和JRuby的性能都大大超越了1.8.6,而1.9.1又领先于JRuby,虽然我们可以通过一些命令行参数来改进JRuby的性能,但实际情况差不多如此。

1.9.1的性能改进不仅仅来自于更快的VM,一些新特性也起到了很大的作用。Muhammed Ali向我们展示了如何通过Ruby 1.9.1的Fibers来度量Web应用。另一方面,Muhammed还指出了1.9.1中的Object#extend所导致的内存泄漏问题

与此同时,1.8.6仍旧是某些项目的不二之选,这是由于1.9.1缺少了一些库的支持。由于这个原因,很多人热衷于修复1.8.6的某些瓶颈。Joe Damato在其博客上发表了一些文章谈到了这些问题。比如,他谈到了--enable-pthread背后的事情以及为何禁用该设定会提升30%的性能。在另一篇文章中,Joe和Aman Gupta探索了Ruby GC的一个问题并给出了一个小修复来解决GC和EventMachine的问题:

* 由于极大地降低了stack frame的大小,因此将GC的速度提升了2、3倍。

* 修复了EventMachine中的一个公开bug——通过Epoll来使用线程会极大地降低应用的速度。其原因是每个线程都会继承一个~800,000字节的stack,每次上下文切换时都会对其进行复制。

* 在使用Sinatra+Thin+Epoll+Threads时会将请求数从每秒500个提升到7000个,太爽了。

最后,Viktor Hokstad正在撰写一系列文章讲述如何编写Ruby编译器。最近的一篇谈到了怎样才能让Ruby更快

查看英文原文:Ruby Performance Roundup: Ruby 1.9.1 Real World Performance, GC vs EventMachine, Ruby Compiler

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT