写点什么

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

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

关注

评论

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

CPython 性能将提升 5 倍?faster-python 项目 PEP 659 源码级解读

阿里巴巴终端技术

Python 源码 源码分析 CPython

Kafka 为什么这么快?多的是你不知道的事

码哥字节

kafka 消息队列 1月日更 1月月更

混沌工程之 Linux 网络故障模拟工具TC

zuozewei

Linux 混沌工程 1月月更

如何基于知识图谱实体解析技术进行数据优化?

索信达控股

人工智能 AI 知识图谱 数据优化 索信达控股

Python 为什么不设计 do-while 循环结构?

Python猫

Python

项目管理是做什么

爱吃小舅的鱼

为什么HashMap会产生死循环?

王磊

APICloud 原生模块、H5模块、多端组件使用教程

YonBuilder低代码开发平台

前端开发 APP开发 APICloud 模块 跨端开发

网络安全kali渗透学习 web渗透入门 Kali系统的国内源配置

学神来啦

ThinkPHP6和GatewayWorker简单的示例

CRMEB

表单数据高级搜索功能设计

全象云低代码

搜索引擎 前端 低代码 搜索 表单

3DCAT荣获2021金陀螺“年度XR行业技术创新奖”“年度优秀VR行业应用奖”两项大奖

3DCAT实时渲染

云计算 教育 VR/AR 渲染 渲染器

Scrum Master如何参与每日Scrum(Daily Scrum)

Bruce Talk

Scrum 敏捷 Agile Coach/Facilitate

(1-14/14) 首位销售人员

mtfelix

300天创作 2022Y300P

使用Rainbond打包业务模块,实现业务积木式拼装

北京好雨科技有限公司

深入浅出Apache Pulsar(1):Pulsar vs Kafka

云智慧AIOps社区

kafka 云原生 消息队列 kafka运维 Apache Pulsar 消息系统

【高并发】导致并发编程频繁出问题的“幕后黑手”

冰河

并发编程 多线程 高并发 协程 异步编程

redis未授权访问漏洞复现

喀拉峻

redis 黑客 网络安全 安全 信息安全

前额皮质如何影响我们的工作效率?

LigaAI

工作效率 脑科学

如何处理消息丢失问题?

JavaEdge

1月月更

架构实战训练营-模块7-作业

温安适

「架构实战营」

聚类算法有哪些?又是如何分类?

郑州埃文科技

数据分析 聚类算法

政法委跨单位重点人员联防联控平台建设,治安防控系统开发

a13823115807

Android 64位架构适配

百瓶技术

andiod 客户端

架构实战营第 4 期 -- 模块七作业

烈火干柴烛灭田边残月

架构实战营

人效将是快消品企业未来发展的最大瓶颈

百度大脑

人工智能

Hoo虎符研究院|区块链简报 20220117期

区块链前沿News

Hoo虎符 Hoo 虎符研究院 区块链资讯

使用无参数函数进行命令执行

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

十大视频场景化应用工具+五大视频领域冠军/顶会算法重磅开源!

百度大脑

Go 语言快速入门指南:Go 并发初识

宇宙之一粟

golang 并发 Go 语言 1月月更

低代码实现探索(二十二)如何构建一个可以看的懂的系统

零道云-混合式低代码平台

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