I was wondering the difference between ‘+’ and ‘«’ for String in Ruby. So wrote the sample codes like the below:

% cat s1.rb
s = ""
1000000.times do
  s += "a"
end
% cat s2.rb
s = ""
1000000.times do
  s = s << "a"
end

Then found the huge difference of the speed! ‘«’ is much faster than ‘+’!

% time ruby s1.rb
ruby s1.rb  1.25s user 1.57s system 99% cpu 2.838 total
% time ruby s2.rb
ruby s2.rb  0.09s user 0.05s system 91% cpu 0.152 total