阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

Ruby 性能近况:GC 调优、Maglev 和 MacRuby

  • 2009-04-18
  • 本文字数:830 字

    阅读完需:约 3 分钟

Ruby 1.8 中的垃圾回收器在去年受到了广泛的关注。Ruby 企业版(REE)的开发者们对 GC 进行了修改,实现了进程间的内存共享(详见 InfoQ 对创建者的采访)。REE 已经成为部署和运行 Rails 应用的普遍方式,包括 37Signals 在内的很多实践者都在使用它。最近, REE 中的 GC 有所改进,修正了一些 bug ,解决突发的冻结问题。

标准 Ruby1.8.x 的用户很快也可以受益于 MBAPI 补丁,这一补丁修正了许多 GC 问题及其相关的内存泄露问题,目前 MBAPI 由 EngineYard 提供赞助。

Evan Weaver 提供了 GC 调优小贴士,并推荐了一些可以监控 GC 的补丁。调优的结果如下:

目前每 13 个请求 GC 就会运行一次,代价有些高,每个请求需要耗费 0.009 秒。这意味着可以快上个 34% 左右。GC 调用频次与 RUBY_GC_MALLOC_LIMIT 的设置直接相关,但是如果我们将这个值设得再高一些,内存使用量就像吹气球那样爆掉了。

提高性能的另一个方法是寻求其他的 Ruby 实现,比如得益于现代 JVM 中成熟 GC 的 JRuby。其他的 Ruby 实现也将性能的提升作为主要的目标。Rubinius 正在稳步发展,而 MacRuby最近在它的实验分支上也有新的进展,性能上有所提升。实验分支上的工作正在进行中

  • 这个编译器现在能(据我所知)通过所有的语言规格,所以我猜它现在算是基本完成了。[…]
  • 由于以上种种,IRB 现在运行得不错!

更多改进

  • 引入了尾部调用消除。这一优化将递归调用转换成本地回路,这样可以防止栈溢出。[…]
  • 为了更快解释#eval 表达式,研究了 LLVM IR 解释器。研究结果已经提交,在简单表达式上工作得非常不错。不过缺省情况下不会激活这一功能,这是受调用 VM 基元的限制所致。我们将不得不稍微修改一下 LLVM 解释器,让它可以完全使用。这将在不远的将来实现。

最后,GemStone 的 Ruby 实现 MagLev 正在进行内部的 Alpha 版测试,Beta 版将于 Q2 推出。现在,兼容性(RubySpec)和基准测试结果在MagLev 的网站上已经公布。 Twitter 上也同步更新项目进展。

查看英文原文: Ruby Performance Roundup: GC Tuning, MagLev, MacRuby

2009-04-18 05:241786
用户头像

发布了 80 篇内容, 共 19.2 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

CSS(六)——用CSS设置图像效果

程序员的时光

程序员 大前端 七日更 28天写作

28天瞎写的第二百三十天:DIY 键盘的故事

树上

28天写作 机械键盘 GH60

浪漫主义的消亡

石君

28天写作

机器学习·笔记之:Cost Function - Intuition I

Nydia

壁纸收藏

小马哥

摄影 七日更

记录关于写作的两个小想法

JiangX

28天写作

“区块链新闻编辑部”: 从“云媒体”到“链媒体”的现实跨越

CECBC

区块链技术

Libra演进与数字货币国际化

CECBC

区块链

Dubbo 3.0 前瞻之对接 Kubernetes 原生服务

阿里巴巴云原生

容器 运维 云原生 k8s dubbo

HDFS是如何设计架构的?

大数据老哥

关于垃圾收集器你了解多少?一文总结七大垃圾收集器

Java鱼仔

Java JVM 垃圾收集

创业失败启示录|雨季后的明媚阳光

阿萌

28天写作 创业失败启示录

GNUCash 5: 报表

lidaobing

GNUCash 28天写作

一文搞懂“技术债”

李忠良

28天写作

WebPack | Loader处理非JavaScript模块机制详解

梁龙先森

JavaScript 大前端 webpack 28天写作

Java基础--2021Java面试题系列教程--大白话解读

JavaPub

Java 面试 javapub

进大厂必看!拼多多大佬总结的10万字Springboot经典学习笔记

武哥聊编程

Java springboot 28天写作

原来酸奶是这个味道,真香!「幻想短篇 20/28」

道伟

28天写作

Flink可靠性的基石-checkpoint机制详细解析

五分钟学大数据

大数据 flink

程序员入职新公司,只需8步,直接凸显出个人价值

Java架构师迁哥

这是阿里技术专家对 SRE 和稳定性保障的理解

阿里巴巴云原生

项目管理 运维 云原生 安全 监控

KubeVela:标准化的云原生平台构建引擎

阿里巴巴云原生

容器 云原生 k8s API OAM

模块分解 - 微服务架构认识与思考

raox

精彩的封面 | 视频号 28 天(20)

赵新龙

28天写作

“复制”马斯克(一):全世界都会为“自大狂”让路吗?

脑极体

产品训练营-第五课

Geek_娴子

开发质量提升系列:问题登记列表(下)

罗小龙

生产事故 28天写作 解决思路

教你用Java字节码做点有趣的事

比伯

Java 编程 架构 程序人生 计算机

nodejs的调试debug

程序那些事

debug 调试 nodejs 程序那些事 程序调试

9个REST API设计的基本准则

devpoint

APi设计 RESTf

三张图解释静态NAT、动态NAT、PAT

Ruby性能近况:GC调优、Maglev和MacRuby_Ruby_Werner Schuster_InfoQ精选文章