Project

General

Profile

Actions

Feature #12788

closed

Improve String lstrip and strip performance

Added by asterite (Ary Borenszweig) about 8 years ago. Updated about 8 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:77392]

Description

This adds a fast path for lstrip_offset in the case of single byte optimizable strings. This optimization already exists in rstrip_offset but I noticed it was missing in rstrip.

I made sure to only remove ascii space, not '\0', to preserve backwards compatibility. (rstrip seems to remove '\0', but not lstrip)

A benchmark:

s = " " * 10_000_000
time = Time.now
p s.lstrip
p s.strip
puts Time.now - time

s = " " * 100_000_000
time = Time.now
p s.lstrip
p s.strip
puts Time.now - time

Times before: 0.195159 and 1.918969
Times after: 0.013684 and 0.143966

So a bit more than 10x faster.

By the way, Akira Matsuda-san gave a really nice closing keynote in RubyConf Brasil yesterday that encouraged all of us to use Ruby and contribute to it, so here is my first patch :-)


Files

string_lstrip_improvement.patch (685 Bytes) string_lstrip_improvement.patch asterite (Ary Borenszweig), 09/26/2016 01:02 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0