Bug #13773
closedImprove String#prepend performance if only one argument is given
Description
This is very similar with https://github.com/ruby/ruby/pull/1634
If only one argument is given, this will prepend the string without
generating temporary object.
String#prepend -> 47.5 % up
Before¶
      String#prepend      1.517M (± 1.8%) i/s -      7.614M in   5.019819s
After¶
      String#prepend      2.236M (± 3.4%) i/s -     11.234M in   5.029716s
Test code¶
require 'benchmark/ips'
Benchmark.ips do |x|
  x.report "String#prepend" do |loop|
    loop.times { "!".prepend("hello") }
  end
end
Patch¶
        
           Updated by watson1978 (Shizuo Fujita) about 8 years ago
          Updated by watson1978 (Shizuo Fujita) about 8 years ago
          
          
        
        
      
      - Status changed from Open to Closed
Applied in changeset trunk|r60480.
string.c: Improve String#prepend performance if only one argument is given
- 
string.c (rb_str_prepend_multi): Prepend the string without generating 
 temporary String object if only one argument is given.
 This is very similar with https://github.com/ruby/ruby/pull/1634String#prepend -> 47.5 % up [Fix GH-1670] [ruby-core:82195] [Bug #13773] 
- 
Before 
 String#prepend 1.517M (± 1.8%) i/s - 7.614M in 5.019819s
- 
After 
 String#prepend 2.236M (± 3.4%) i/s - 11.234M in 5.029716s
- 
Test code 
 require 'benchmark/ips'
Benchmark.ips do |x|
x.report "String#prepend" do |loop|
loop.times { "!".prepend("hello") }
end
end