文字列の連結はStringBufferより+演算子の方が高速

どっかに書いてあったよなぁと思ったらJAVA PRESSのVol.40にありました。J2SE5.0ではStringBufferと同じ機能を持ったStringBuilderというクラスがあるんですけど、その違いをまとめてみます。

一番の違いは、StringBufferの各メソッドはスレッドセーフに設計されているためshynchronizedがついているが、StringBuilderにはついていないという事。よく+演算子を使うよりStringBufferを使えと言いますが、J2SE5.0で+演算子を使用した場合StringBuilderに最適化されるので、StringBufferを明示的に使うより高速に動作する事になります。というわけでJ2SE5.0の場合の速さの順番は「StringBuffer>+演算子>StringBuilder」となります。

単なる文字列の連結でスレッドを意識する必要が無い場合は、+演算子を使う、又はStringBuilderを使うようにするってことですね。でもこの話は普通のシステムでは非常に微弱な差なため、もっと他の所をチューニングした方が高速になると思います。文字列の連結のコストなんてたかだか知れてるものだと思いますから。