JAVAで文字列の連結をするには何を使うのが一番いいのか気になったので下記の文字列連結の速度を計測してみました。
・プラス演算子
・String#concat
・StringBuffer
・StringBuilder
・String#format
計測方法は2つの文字列の連結を100000回行ってかかった時間を出しています。
JDKバージョン:1.8
結果は以下の通りになりました。
プラス演算子
1回目:2330700ナノ秒
2回目:1653300ナノ秒
3回目:1458500ナノ秒
4回目:1360600ナノ秒
5回目:1298500ナノ秒
平均:1620320ナノ秒
String#concat
1回目:853700ナノ秒
2回目:485900ナノ秒
3回目:489200ナノ秒
4回目:486000ナノ秒
5回目:516700ナノ秒
平均:566300ナノ秒
StringBuffer
1回目:951700ナノ秒
2回目:708600ナノ秒
3回目:811500ナノ秒
4回目:949500ナノ秒
5回目:726900ナノ秒
平均:829640ナノ秒
StringBuilder
1回目:606400ナノ秒
2回目:604100ナノ秒
3回目:590300ナノ秒
4回目:619000ナノ秒
5回目:591400ナノ秒
平均:602240ナノ秒
String#format
1回目:58400100ナノ秒
2回目:18726800ナノ秒
3回目:21485100ナノ秒
4回目:20860800ナノ秒
5回目:18404200ナノ秒
平均:27575400ナノ秒
StringBuilderが一番早くなると思っていましたがconcatが一番早いという結果になりました。
やはり遅いのはプラス演算子やString#formatでの文字列の連結でした。
String#formatは文字列の連結だけを行うのには使わないほうがいいですね。
文字列の連結にはStringBuilderやconcatを使っておけばいいということがわかりました。
以上です。