nmtysh.log

Tech系のネタや日々の独り言などを書いています。

Java: StringBuilder と synchronized

以前、Java: StringBuilder と StringBuffer の違いでソースを見ると両者の違いは synchronized メソッドであるかの違いだと書きました。
そこで、 StringBuilder の append() を実行するときに syncronized 文にした場合の実行速度は StringBuffer と同じなのか実験してみました。

Java:文字列結合の実行速度の比較 で使用したプログラムを改造して下の部分を追加しました。
(その他オプション最大値を変更しました)

StringBuilder sb = new StringBuilder();
for(int l=0; l<acount; l++) {
    synchronized(sb) {
        sb.append("0");
    }
}


・実行環境
OS : Windows XP Pro SP3
CPU : Intel Core 2 Duo E8400
Java : JDK6u24

1,000,000回文字列を結合する処理を10回行う時間を測定しました。
それを10回行い平均です。

・結果 平均(合計)(単位は、ms)

StringBufferStringBuilderStringBuilder
(Syncronized)
510.9(5109) 223.4(2234) 509.9(5093)


StringBuffer と synchronized した StringBuilder はほぼ変わらないという結果がでました。
予測通りの結果です。

2011/02/24:文章を若干修正