文字列連結のスピード(修正版)

前回のソースで、String#concat()を使用している部分がこうなっていました。

str_concat.concat("" + i);

これだとstr_concatには連結されませんね。
このように修正しました。

str_concat = str_concat.concat(String.valueOf(i));

nilさん、ご指摘ありがとうございました。

さて、再計測。まずは1000回。

1000 times loop.
String +=       : 00:00:00.034924830
String#concat() : 00:00:00.020945120
StringBuffer    : 00:00:00.002231848
StringBuilder   : 00:00:00.000897880

1万回。

10000 times loop.
String +=       : 00:00:05.222788651
String#concat() : 00:00:02.281017560
StringBuffer    : 00:00:00.005938185
StringBuilder   : 00:00:00.002852598

10万回。

100000 times loop.
String +=       : 01:04:14.471478917
String#concat() : 00:35:21.662596224
StringBuffer    : 00:00:00.117385869
StringBuilder   : 00:00:00.102142312

100万回。

1000000 times loop.
String +=       : (とにかく遅い)
String#concat() : (〃)
StringBuffer    : 00:00:00.611553982
StringBuilder   : 00:00:00.605492039

1000万回。

10000000 times loop.
String +=       : (とにかく遅い)
String#concat() : (〃)
StringBuffer    : (java.lang.OutOfMemoryError)
StringBuilder   : (java.lang.OutOfMemoryError)

結論。1万回以下程度ではStringBuilderは速いです。String#concat()はそんなに速くないですね。