Evaluating YJIT’s Performance in a Production Context: A Pragmatic Approach
summary
YJIT is a CRuby-integrated JIT using Lazy Basic Block Versioning and a simple “compile after N calls” heuristic, with a multiplatform backend (x86_64 and arm64) and runtime value promotion. Benchmarks report ~30–50% speedups over the interpreter; a Shopify Storefront Renderer deployment shows ~15% average and later ~25% end-to-end improvements, while warm-up is near-instant versus ~2 minutes for Truffle. Memory metadata is the dominant overhead but is reduced by lazy allocate executable memory and compact context layout; tests compile 3,000 methods compiled in the largest workload.
AI-written summary · about
chapters (11)
- 0:00Introduction to YJIT
- 1:58Project history and context
- 3:06YJIT technical architecture
- 4:49Optimizing for production
- 5:53Design for rapid warm-up
- 7:37Managing memory footprint
- 9:13Benchmarking methodology
- 10:53Performance evaluation results
- 13:08Lessons and future outlook
- 15:31Production deployment metrics
- 17:47Conclusions and Q&A
related talks
30mYJIT - Building a new JIT Compiler inside CRuby
17mYJIT: A Basic Block Versioning JIT Compiler
28mZJIT: The future of Ruby performance
37mKeynote: YJIT's Three Languages: the Fun of Code that Writes Code
27mThe design and implementation of ZJIT & the next five years
20mBYOJ: Build your own JIT with Ruby
40mThe secret power of Ruby 2.6: JIT
32mExperiments in sharing Java VM technology with CRuby
