summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2022-07-06 12:31:54 +0200
committerJean Boussier <jean.boussier@gmail.com>2022-07-06 17:25:58 +0200
commit906f7cb3e7e6de2b75dc4a4a3c09f98d8bf28388 (patch)
treefe7dd9fc9424564fb9d10222d3df0591c76b0444 /benchmark
parent9641f23316d7eeb445cfc31191fe746865454671 (diff)
downloadruby-906f7cb3e7e6de2b75dc4a4a3c09f98d8bf28388.tar.gz
vm_opt_ltlt: call rb_str_buf_append directly if RHS is a String
`rb_str_concat` does a lot of type checking we can easily bypass. ``` | |compare-ruby|built-ruby| |:--------------|-----------:|---------:| |string_concat | 362.007k| 398.965k| | | -| 1.10x| ```
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/string_concat.yml13
1 files changed, 13 insertions, 0 deletions
diff --git a/benchmark/string_concat.yml b/benchmark/string_concat.yml
new file mode 100644
index 0000000000..da403e7a53
--- /dev/null
+++ b/benchmark/string_concat.yml
@@ -0,0 +1,13 @@
+prelude: |
+ CHUNK = "a" * 64
+benchmark:
+ string_concat: |
+ buffer = String.new(capacity: 4096)
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK
+ buffer << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK << CHUNK