diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-01-31 16:53:04 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-01-31 17:12:05 +0900 |
commit | 05229cef45fe04ed2bd0effd35eef271f7599879 (patch) | |
tree | 83e7730e7a64926b532b33f13f26776fdff79fbf /benchmark | |
parent | 0dd6f020fcffd26cb89ee9eda59b15483e160f45 (diff) |
Improve `String#slice!` performance
Instead of searching twice to extract and to delete, extract and
delete the found position at the first search.
This makes faster nearly twice, for regexps and strings.
| |compare-ruby|built-ruby|
|:-------------|-----------:|---------:|
|regexp-short | 2.143M| 3.918M|
|regexp-long | 105.162k| 205.410k|
|string-short | 3.789M| 7.964M|
|string-long | 1.301M| 2.457M|
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2871
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/string_slice.yml | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/benchmark/string_slice.yml b/benchmark/string_slice.yml new file mode 100644 index 0000000000..fc2393c5d1 --- /dev/null +++ b/benchmark/string_slice.yml @@ -0,0 +1,11 @@ +prelude: | + long_string = "x"*1000+"-hår" +benchmark: + regexp-short: | + "x-hår".slice!(/-(.)(.)(.)/, 3) + regexp-long: | + long_string.dup.slice!(/-(.)(.)(.)/, 3) + string-short: | + "x-hår".slice!("r") + string-long: | + long_string.dup.slice!("r") |