A Tale of Two String Representations

303aae3354beb438eaa44000b1f2f3fd?s=47 Kevin Menard
September 08, 2016

A Tale of Two String Representations

Strings are used pervasively in Ruby. If we can make them faster, we can make many apps faster.

In this talk, I will be introducing ropes: an immutable tree-based data structure for implementing strings. While an old idea, ropes provide a new way of looking at string performance and mutability in Ruby. I will describe how we replaced a byte array-oriented string representation with a rope-based one in JRuby+Truffle. Then we’ll look at how moving to ropes affects common string operations, its immediate performance impact, and how ropes can have cascading performance implications for apps.


Kevin Menard

September 08, 2016