StringBuilder
Java5で追加されたStringBuilderについて。名前は聞いたことあるけど使ったことはなかったりするので調べてみた。以下Javadocより。
- 文字の可変シーケンスを表すクラス
- StringBuffer とだいたい同じAPIを持つ
- スレッドセーブではない。(StringBufferはスレッドセーフ)
- なので、ほとんどの実装でStringBufferより高速。可能であればこちらを使うべき。
どれだけ速いのか?
単純に文字列を連結する操作でどれだけ差が出るか測ってみました。
- buff.append("a")を50万回行った場合の所要時間を計測
- 5回試行し、平均を取る。
バッファサイズ指定なし | バッファサイズ指定あり | ||||
---|---|---|---|---|---|
StringBuilder | 36msec | 28sec | |||
StringBuffer | 43msec | 37msec |
やはり、StringBuilderの方が速いな。あと、バッファサイズはわかっているのであれば指定しましょう。