开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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:241965
用户头像

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

关注

评论

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

Kubernetes手记(1)- Kubernetes概述

雪雷

k8s 6月日更

【Vue2.x 源码学习】第四篇 - 对象的深层劫持

Brave

源码 vue2 6月日更

理解【Apache Zookeeper】

awen

zookeeper

全栈程序员这个月写了啥代码?

程序员鱼皮

Java JavaScript 大前端 后端 全栈

【译】JavaScript 代码整洁之道-注释篇

KooFE

JavaScript 大前端 代码注释 6月日更 整洁代码

你有没有 996 ?你要不要 955 ?

escray

学习 极客时间 朱赟的技术管理课 6月日更

极光开发者周刊【No.0604】

极光JIGUANG

程序员 开发者 IT行业

模块五- 课后作业

Presley

架构实战营 #架构实战营

区块链技术为版权保护与运营提供科技支撑

CECBC

区块链—重构新商业体系和全新商业生态环境

CECBC

《原则》(四)

Changing Lin

算法如何促成亿级别扶持曝光视频?爱奇艺Budget Pacing智能扶植系统实践

爱奇艺技术产品团队

架构 推荐 算法 广告 扶植

从天而降的AI“青云梯”,开发者们准备好了吗?

白洞计划

【立刻报名】加速开发 Perforce on Tour China 2021-龙智

龙智—DevSecOps解决方案

【环球网】博睿数据CEO冯云彪:做好生态链企业的适配工作

博睿数据

博睿数据 博睿数据数据链DNA 生态链

架构实战营模块5作业

En wei

架构实战营

数字中国的视觉进阶:ISP的来处与归途

脑极体

python——格式化输入输出与截取字符串

在即

6月日更

博睿数据重塑APM,引领IT运维新标杆

博睿数据

博睿数据 数据链DNA 服务可达

Nacos--简介

是老郭啊

微服务 nacos 服务注册与发现

Nacos-- docker搭建

是老郭啊

Docker nacos

区块链作为“信任的机器”,将改变社会价值的传递方式

CECBC

MySQL基础之二:SQL语句介绍与使用

打工人!

MySQL sql查询 6月日更

深入理解iOS图文混排原理并自定义图文控件

Geen练

图文混排 iOS Developer iOS 知识体系

聊聊MySQL全局锁

架构精进之路

MySQL 6月日更

机器通用运行框架抽象

型火🔥

架构 微服务 抽象 中间件 机器

“微博评论”高性能高可用计算架构

白发青年

架构实战营

拍乐云运维专家受邀QECon大会,畅谈多云环境伸缩实践

拍乐云Pano

网络攻防学习笔记 Day35

穿过生命散发芬芳

网络攻防 6月日更

【得物技术】JS资源分包

得物技术

CSS 大前端 js 版本 页面

浅析「扣减库存」的方案设计

悟空聊架构

分布式 秒杀 电商 6月日更 库存

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