Append in place for strings and arrays [failure unrelated]
Created by: cirosantilli
It's faster.
Behavior should be unchanged: no function inputs were altered, only local variables.
Benchmark:
Benchmark.bm(first_col_width) do |benchmark|
benchmark.report('+= [0]') do
a = []
N.times { a += [0] }
end
benchmark.report('<< 0') do
a = []
N.times { a << 0 }
end
benchmark.report('<< [0, 1]') do
a = []
N.times { a += [0, 1] }
end
benchmark.report('push(*[0, 1])') do
a = []
N.times { a.push(*[0, 1]) }
end
benchmark.report('+= "ab"') do
a = ''
N.times { a += 'ab' }
end
benchmark.report('<< "ab"') do
a = []
N.times { a << 'ab' }
end
end
Result:
user system total real
+= [0] 0.090000 0.010000 0.100000 ( 0.093640)
<< 0 0.000000 0.000000 0.000000 ( 0.000706)
<< [0, 1] 0.170000 0.000000 0.170000 ( 0.164410)
push(*[0, 1]) 0.000000 0.000000 0.000000 ( 0.001339)
+= "ab" 0.020000 0.000000 0.020000 ( 0.024198)
<< "ab" 0.000000 0.000000 0.000000 ( 0.001242)