文字列連結のスピード(修正版)
前回のソースで、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()はそんなに速くないですね。