読者です 読者をやめる 読者になる 読者になる

文字列に文字列を追加するときに+=を使うのと<<を使うのではスピードが325倍違う

Ruby
$ time ruby19 -e 's="";50000.times{s+="foobar"};'
4.58s user 9.03s system 99% cpu 13.650 total
$ time ruby19 -e 's="";50000.times{s<<"foobar"};'
0.03s user 0.01s system 79% cpu 0.042 total

えーっと、連結スピードが325倍違います。
注意が必要なのは+=は単純な連結ではないことです。

a="foo"
b=a

となっているときに

b<<"bar"

とやるのと

b+="bar"

とやるのでは結果が違います。<<はaもbも文字列が追加されます。
+=は参照先が変更されてしまいますので、bしか追加されません。

結論

<<を使え
cgi.rbでは使っているんだよなぁ。直すぞ。

追記

なんだかはてぶで理由も説明してやれよなんて書かれたので
理由を説明します。<<は単純な文字列の追加メソッドなのですが、
+=はリファレンスマニュアルに書いているように
式1 = 式1 + 式2
と評価されます。このコストが高いと言う事です。
式1 + 式2 でオブジェクトが作られ、それが式1に代入(参照)されます。