写点什么

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

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

关注

评论

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

Mac电脑视频编辑处理:Apeaksoft Video Editor 激活最新版

mac大玩家j

Mac软件 视频处理工具 视频编辑器 视频编辑管理

打破界限:一体化数据驱动低代码平台,构建业务生态新纪元

天津汇柏科技有限公司

低代码

文心一言 VS 讯飞星火 VS chatgpt (165)-- 算法导论13.1 5题

福大大架构师每日一题

福大大架构师每日一题

Vue 2最终版本 v2.7.16 已发布

南城FE

JavaScript Vue 前端开发

Kosmos实战系列:有状态服务(MySQL)跨云灾备实战

畅聊云原生

GaussDB(DWS)中的分布式死锁问题实践

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

软件测试/测试开发丨软件测试的基本概念

测试人

软件测试

第33期 | GPTSecurity周报

云起无垠

好用的IOS数据传输工具:FonePaw iOS Transfer中文激活

胖墩儿不胖y

Mac软件 iOS数据传输工具

IPQ6018 vs. IPQ8074: A Selection Guide for Wireless Network Processors

wallysSK

网站被ddos跟cc攻击会有什么影响,该如何去解决

德迅云安全_初启

《网络安全事件报告管理办法(征求意见稿)》正在公开征求意见

行云管家

网络安全 网络安全法

Kuasar成为CNCF官方项目,探索容器运行时新纪元

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

一起学Elasticsearch系列-写入和检索调优

Java随想录

Java 大数据 Elastic Search

2024年度腾讯犀牛鸟精英人才计划开放申请

Geek_2d6073

Flink Has Become the De-facto Standard of Streaming Compute

Apache Flink

大数据 flink 实时计算

带你了解决策树模型

小齐写代码

基于大语言模型LangChain框架:知识库问答系统实践

博文视点Broadview

移动端防截屏录屏技术在百度账户系统实践

百度Geek说

移动端 企业号12月PK榜 防截屏录屏 百度账户系统

测试开发 | 深入了解监督学习(Supervised Learning)

测吧(北京)科技有限公司

测试

好消息!华为云时习知荣获IXDC AWARD国际体验奖

华为云PaaS服务小智

云计算 华为云

测试开发 | 人工智能无监督学习(Unsupervised Learning)

测吧(北京)科技有限公司

测试

IPQ9574-IPQ8072 has 10G Ethernet port- What is the performance difference?

wifi6-yiyi

ipq9574 10G Ethernet port

绝地反击,不做背锅侠!

尚思卓越

运维 堡垒机

基于「迭代分支」的 API 开发模式

Apifox

程序员 后端 Apifox 分支 API 开发

【坚果派】JS开源库适配OpenHarmony系列——第一期实操

白晓明

OpenHarmony JS开源库 ArkTS开源库

数据服务化解耦 创新企业智能运营架构

用友BIP

数据服务

Ampere 年度展望:AI 浪潮改变计算格局,预测 2024 年三大趋势

科技热闻

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