Make Ruby 2.6 Faster with JIT!, by Noah Gibbs


You've spent too many weeks of your life waiting on slow Ruby
code. Ruby 2.6 has JIT built in, but it doesn't happen
automatically. Learn what it does, how you use it, and when to use
it. And take back the next few weeks of your life that you'd
otherwise spend waiting.

This is an "upcoming Ruby"-flavored talk about what JIT is and what it does, and how to deal with JIT as a programmer. Topics the talk will cover:

  • The very basics - what does JIT do?
  • How much of a speedup does JIT give?
  • Why JIT takes more memory and how much
  • Warmup time and short-running versus long-running programs
  • How Ruby's JIT fixes the "too much memory" problem and the "slow startup" problem
  • How and why to sometimes turn JIT on or off with Ruby 2.6
  • Why has it taken so long for the Ruby Core Team to be okay with JIT?
  • How is MJIT different from a "normal" JIT implementation like the Java Virtual Machine?
  • Should I Use JIT with Rails?
  • What problems might JIT be causing me? How can I tell?
  • Can I use JIT for Ahead-Of-Time compiling?

The audience can be beginner/intermediate in Ruby. They should understand the basic differences between compiled and interpreted programs.


I've worked a fair bit with MJIT, the new experimental Ruby JIT
branch, and I can talk in detail about how it's different from
non-Ruby JIT. My core job responsibilities are timing and profiling
Ruby code. It's what I do all day. I've been a systems programmer for
multiple decades and I've worked on compilers and interpreters,
including the Ruby interpreter.


Noah works as AppFolio's Ruby Fellow, writing about Ruby performance
and related tooling at He wrote the book
"Rebuilding Rails" about understanding Rails as "really just Ruby."

Edit proposal


Southeast Ruby 2018 - Accepted [Edit]

Add submission