summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-31 16:53:04 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-31 17:12:05 +0900
commit05229cef45fe04ed2bd0effd35eef271f7599879 (patch)
tree83e7730e7a64926b532b33f13f26776fdff79fbf /benchmark
parent0dd6f020fcffd26cb89ee9eda59b15483e160f45 (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.yml11
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")