YJIT:用于CRuby的基本块版本JIT编译器

Maxime Chevalier-Boisvert, Noah Gibbs, J. Boussier, Si Xing Wu, Aaron Patterson, Kevin Newton, J. Hawthorn
{"title":"YJIT:用于CRuby的基本块版本JIT编译器","authors":"Maxime Chevalier-Boisvert, Noah Gibbs, J. Boussier, Si Xing Wu, Aaron Patterson, Kevin Newton, J. Hawthorn","doi":"10.1145/3486606.3486781","DOIUrl":null,"url":null,"abstract":"Ruby is a dynamically typed programming language with a large breadth of features which has grown in popularity with the rise of the modern web, and remains at the core of the implementation of many widely-used websites. CRuby, the default implementation of the language, features a JIT compiler known as MJIT, but developers often do not enable it in production environments, because it does not always yield performance improvements on real-world software. Attempts to independently reimplement the Ruby language, such as JRuby and TruffleRuby have shown impressive performance results on benchmarks, but often lag behind CRuby when it comes to supporting new additions to the language, which limits their adoption. We introduce YJIT, a new JIT compiler built inside CRuby based on a Lazy Basic Block Versioning (LBBV) architecture. We show that while our compiler does not match the peak performance of TruffleRuby, it offers near-100% compatibility with existing Ruby code, impressively fast warmup, and speedups from 15% to 19% on sizeable benchmarks based on real-world software.","PeriodicalId":279233,"journal":{"name":"Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages","volume":"123 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2021-10-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":"{\"title\":\"YJIT: a basic block versioning JIT compiler for CRuby\",\"authors\":\"Maxime Chevalier-Boisvert, Noah Gibbs, J. Boussier, Si Xing Wu, Aaron Patterson, Kevin Newton, J. Hawthorn\",\"doi\":\"10.1145/3486606.3486781\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Ruby is a dynamically typed programming language with a large breadth of features which has grown in popularity with the rise of the modern web, and remains at the core of the implementation of many widely-used websites. CRuby, the default implementation of the language, features a JIT compiler known as MJIT, but developers often do not enable it in production environments, because it does not always yield performance improvements on real-world software. Attempts to independently reimplement the Ruby language, such as JRuby and TruffleRuby have shown impressive performance results on benchmarks, but often lag behind CRuby when it comes to supporting new additions to the language, which limits their adoption. We introduce YJIT, a new JIT compiler built inside CRuby based on a Lazy Basic Block Versioning (LBBV) architecture. We show that while our compiler does not match the peak performance of TruffleRuby, it offers near-100% compatibility with existing Ruby code, impressively fast warmup, and speedups from 15% to 19% on sizeable benchmarks based on real-world software.\",\"PeriodicalId\":279233,\"journal\":{\"name\":\"Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages\",\"volume\":\"123 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2021-10-15\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"4\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/3486606.3486781\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3486606.3486781","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 4

摘要

Ruby是一种动态类型编程语言,具有广泛的特性,随着现代web的兴起而越来越受欢迎,并且仍然是许多广泛使用的网站实现的核心。CRuby是该语言的默认实现,其特性是一个称为MJIT的JIT编译器,但开发人员通常不会在生产环境中启用它,因为它并不总是在实际软件中产生性能改进。独立重新实现Ruby语言的尝试,如JRuby和trufflerruby,在基准测试中显示了令人印象深刻的性能结果,但在支持语言的新添加方面往往落后于CRuby,这限制了它们的采用。我们将介绍YJIT,这是一个构建在CRuby内部的基于Lazy Basic Block Versioning (LBBV)架构的新JIT编译器。我们表明,虽然我们的编译器不能达到trufflerruby的峰值性能,但它提供了与现有Ruby代码接近100%的兼容性,令人印象深刻的快速预热,并且在基于真实软件的相当大的基准测试中,速度从15%提高到19%。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
YJIT: a basic block versioning JIT compiler for CRuby
Ruby is a dynamically typed programming language with a large breadth of features which has grown in popularity with the rise of the modern web, and remains at the core of the implementation of many widely-used websites. CRuby, the default implementation of the language, features a JIT compiler known as MJIT, but developers often do not enable it in production environments, because it does not always yield performance improvements on real-world software. Attempts to independently reimplement the Ruby language, such as JRuby and TruffleRuby have shown impressive performance results on benchmarks, but often lag behind CRuby when it comes to supporting new additions to the language, which limits their adoption. We introduce YJIT, a new JIT compiler built inside CRuby based on a Lazy Basic Block Versioning (LBBV) architecture. We show that while our compiler does not match the peak performance of TruffleRuby, it offers near-100% compatibility with existing Ruby code, impressively fast warmup, and speedups from 15% to 19% on sizeable benchmarks based on real-world software.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信