diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2022-07-06 12:31:54 +0200 |
---|---|---|
committer | Jean Boussier <jean.boussier@gmail.com> | 2022-07-06 17:25:58 +0200 |
commit | 906f7cb3e7e6de2b75dc4a4a3c09f98d8bf28388 (patch) | |
tree | fe7dd9fc9424564fb9d10222d3df0591c76b0444 /benchmark | |
parent | 9641f23316d7eeb445cfc31191fe746865454671 (diff) |
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|
```
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6095
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/string_concat.yml | 13 |
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 |