From a932b8c96a4312753993ce0b98d2e9eedec17de0 Mon Sep 17 00:00:00 2001 From: Ryan Lopopolo Date: Sat, 22 Jun 2019 12:55:02 +0100 Subject: Speed up base case by 2x Make non-paragraph mode twice as fast. Performance is within a factor of 2 of the original implementation. --- mrblib/string.rb | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/mrblib/string.rb b/mrblib/string.rb index adf19d00c..0bac52a20 100644 --- a/mrblib/string.rb +++ b/mrblib/string.rb @@ -44,20 +44,13 @@ class String pointer += 1 end else - matched_length = 0 - separator_length = separator.length - while pointer < string.length - c = string[pointer] - pointer += 1 - matched_length += 1 if c == separator[matched_length] - next unless matched_length == separator_length - + while (pointer = string.index(separator, start)) + pointer += separator.length if self.class == String yield string[start...pointer] else yield self.class.new(string[start...pointer]) end - matched_length = 0 start = pointer end end -- cgit v1.2.3