Kevin Menard, Chris Seaton, Benoit Daloze,
"Specializing ropes for ruby"
: Proceeding ManLang '18 Proceedings of the 15th International Conference on Managed Languages & Runtimes Article No. 10, ACM New York, NY, USA, 9-2018, ISBN: 978-1-4503-6424-9
Specializing ropes for ruby
Sprache des Titels:
Proceeding ManLang '18 Proceedings of the 15th International Conference on Managed Languages & Runtimes Article No. 10
Ropes are an immutable data structure for representing character strings via a binary tree of operation-labeled nodes. Ropes were designed to perform well with large strings, and in particular, concatenation of large strings. We present our findings in using ropes to implement mutable strings in TruffleRuby, an implementation of the Ruby programming language using a self-specializing abstract syntax tree interpreter and dynamic compilation. We extend ropes to support Ruby language features such as encodings and refine operations to better support typical Ruby programs. Finally, we evaluate the performance of our implementation of ropes and demonstrate that they perform 0.9X ? 9.4X as fast as byte array-based strings in benchmarks of common Ruby string operations.