免费注册!6月19-20日,「亚马逊云科技中国峰会」重磅来袭! 了解详情
写点什么

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

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

关注

评论

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

Vue进阶(幺贰柒):插槽详解

No Silver Bullet

Vue 插槽 10月月更

第 12 章 -《Linux 一学就会》-重定向和文件的查找

学神来啦

云计算 Linux 运维 linux学习

北京博睿宏远数据科技股份有限公司声明

博睿数据

【LeetCode】重复的DNA序列Java题解

Albert

算法 LeetCode 10月月更

🐬【MySQL技术专题】该换换你的数据库版本了,让我们一同迎接8.0的到来哦!(初探篇)

码界西柚

MySQL 运维 MySQL8.0 MySQL 数据库 10月月更

ERP对你有帮助吗?ERP是什么时候开始出现的?

低代码小观

管理 企业 企业管理 运营管理 企业管理系统

【Python自动化测试网站推荐】免费资源网址,帮你找到所有想要的资源!!

程序员阿沐

沈抚示范区·“华为云杯”2021全国AI大赛圆满落幕

华为云开发者联盟

人工智能 华为云 modelarts AppCube AI大赛

「IM开源推荐」前微信技术专家打造,golang实现,一键部署,客户端SDK全平台支持,轻松替代IM云服务

OpenIM

智慧火电扭转传统运作模式,3D可视化助力双碳政策疾行

一只数据鲸鱼

数据可视化 智慧能源 火力发电 智慧火电 火电厂

Form Schema 定义详解

全象云低代码

大前端 低代码平台 JSON Schema

业界首个机密计算容器运行时—Inclavare Containers正式进入CNCF!

阿里巴巴云原生

阿里云 容器 云原生

OpenKruise 如何实现应用的可用性防护?

阿里巴巴云原生

阿里云 开源 云原生 OpenKruise

disruptor在数据同步场景下的应用实战

编程 架构 面试 后端

010云原生之可观测架构模式

穿过生命散发芬芳

云原生 10月月更

netty系列之:使用netty搭建websocket客户端

程序那些事

Java Netty websocket 程序那些事

何时适合进行自动化测试?(上)

禅道项目管理

自动化测试

ERP系统能帮你做些什么?ERP系统的部署类型哪个更适合你?

低代码小观

企业 企业管理 信息化管理 流程管理

腾讯云原生数据库 TDSQL-C荣获“云原生卓越技术提供商”奖项

腾讯云数据库

数据库 tdsql

为了减少代码复杂度,我将if-else升级为面向状态编程

华为云开发者联盟

编程 复杂度 面向状态编程 if-else

VSCode设置Python的unittest测试

陈磊@Criss

Redis和tdsql数据异地同步(迁移)案例

腾讯云数据库

数据库 tdsql

源码 | 为金融场景而生的数据类型:Numeric

RadonDB

数据库 postgresql

Interrupted Exception异常可能没你想的那么简单!

华为云开发者联盟

线程 JVM 高并发 并发 java

kubernetes pod访问不了外网但是宿主机可以

ilinux

带你读Paper丨分析ViT尚存问题和相对应的解决方案

华为云开发者联盟

论文阅读 华为云 Vision Transformer 卷积核

mysql cpu占用超过100%

hasWhere

8. 这篇博客,把python从数值到模块、到字典、到元组,真python入门复习教程通览

梦想橡皮擦

10月月更

一文说清楚css3具有颠覆意义的2D转换效果

你好bk

CSS html css3 大前端 html/css

Android性能优化之Android 10+ dex2oat实践

字节跳动终端技术

字节跳动 移动开发 Android; 火山引擎

Groovy入门常用语法

FunTester

Java 语法 测试开发 Groovy FunTester

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