Skip to content

Instantly share code, notes, and snippets.

@nirvdrum
Last active May 11, 2016 01:21
Show Gist options
  • Save nirvdrum/23ee8bcc7a25294fdfde5d73a9178fb8 to your computer and use it in GitHub Desktop.
Save nirvdrum/23ee8bcc7a25294fdfde5d73a9178fb8 to your computer and use it in GitHub Desktop.

A Tale of Two Strings

RubyKaigi 2016 Conference Proposal

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 that impacts common string operations, its immediate performance impact, and how ropes can have cascading performance implications.

@young-steveo
Copy link

LGTM 👍

@edunham
Copy link

edunham commented May 10, 2016

Looks good! In my opinion, you could improve on a couple of details:

  1. Unless it's obvious from a speaker bio that will be printed everywhere the abstract goes, say who "we" is. "the ropes project"?

  2. Quantify the improvements offered by ropes, if you have that data available. For instance, has adopting ropes improved a project's speed by 1%? 10%? Alternately, specify the absolute times that strings versus ropes take for a common operation. Citing statistics is an easy hack to sound precise and credible.

  3. Add a sentence to help guide the correct subset of RubyKaigi's audience into your talk if it's accepted. Specify any prerequisite knowledge that an attendee will need to get the most out of your talk. This sentence might start with "If you maintain a Ruby library" or "Wherever you work with strings in Ruby code", and end with a concrete promise of how what they learn from your talk will make things better or generally help them achieve their goals.

@nirvdrum
Copy link
Author

Thanks for the feedback! I'll see what I can do within the confines of 600 characters. There is additional information for the selection committee that I omitted here. The abstract is mostly used to help attendees choose between sessions during the multi-track conference. So it needs to be concise and motivating. I'll work on the motivation parts a bit more.

Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment