Evaluating YJIT’s Performance in a Production Context: A Pragmatic Approach
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 widely-used online platforms such as Shopify, GitHub, Discourse,
and Mastodon.
There have been many attempts to integrate JIT compilation into Ruby implementations, but until recently, despite impressive
performance on benchmarks, none had seen widespread adoption.
This has changed with the arrival of YJIT, a new JIT compiler based on a Lazy Basic Block Versioning (LBBV) architecture which has recently been upstreamed into CRuby,
and has since seen multiple large-scale production deployments.
This paper extends on previous work on YJIT and takes a pragmatic approach towards evaluating YJIT's performance in a production context. We evaluate and compare its performance on benchmarks as well as a large-scale real-world production deployment, and we look not only at peak performance, but also at memory usage and warm-up time.
On all of our benchmarks, YJIT is able to consistently outperform the CRuby interpreter by a wide
margin. It offers consistent speedups, full compatibility with existing Ruby code, much less memory overhead and faster warm-up compared to JRuby and TruffleRuby.
We also show that YJIT is able to deliver significant speedups on a real-world deployment on Shopify's worldwide StoreFront Renderer infrastructure, an application for which it is currently the only viable JIT compiler.
Sun 22 OctDisplayed time zone: Lisbon change
11:00 - 12:30 | |||
11:00 22mTalk | Evaluating YJIT’s Performance in a Production Context: A Pragmatic Approach MPLR Maxime Chevalier-Boisvert Shopify, Takashi Kokubun Shopify, Noah Gibbs Shopify, Si Xing "Alan" Wu Shopify, Aaron Patterson Shopify, Jemma Issroff Shopify DOI | ||
11:22 22mTalk | CacheIR: The Benefits of a Structured Representation for Inline Caches MPLR Jan de Mooij Mozilla, Matthew Gaudet Mozilla, Iain Ireland Mozilla, Nathan Henderson University of Alberta, Jose Nelson Amaral University of Alberta DOI File Attached | ||
11:45 22mTalk | Diagnosing Compiler Performance by Comparing Optimization Decisions MPLR Andrej Pečimúth Oracle Labs; Charles University, David Leopoldseder Oracle Labs, Petr Tuma Charles University DOI | ||
12:07 22mTalk | Morello MicroPython: A Python Interpreter for CHERI MPLR Duncan Lowther University of Glasgow, Dejice Jacob University of Glasgow, Jeremy Singer University of Glasgow DOI Pre-print |