2015年2月1日日曜日

StringBuilder対+

JavaでもC#でも、文字列を+で連結すると遅いという話を聞きます。

   こんな感じ "abcd"+"efg"


だからStringBuilderを使いましょうと、どこのコーディング規約でも書いています。

   こんな感じ

       StringBuilder s = new StringBuilder("abcd");
             s.append("efg");
                … = s.toString();


ある日バッチ処理が遅いので、パフォーマンス改善の作業をしました。 それで上記の修正も入れたのですが全く効果が有りませんでした。

考えたら、僕が最初に+での文字列結合が遅いと知ったのは、かなり昔のJavaWorld誌です、どれぐらい昔かと言うと、今は大学生のセガレが当時はギャーギャー夜鳴きをしていた頃です。

当然その間に改善もされているはずなので試してみました、環境はWindows7で普通のノートPCです。

こんな感じ

 String s='1'
  for(int i=0; i <10000; i++)
     s += '1'

1万回繰り返したのですが、+とStringBuilderでは差がなし

3万回繰り返してやっと0.03秒の差


僕なりの結論ですが。

問題なし、わざわざコーディング規約にするほどの事ではない。

です、遅くなった時に始めて気にするでよいと思います。

0 件のコメント:

コメントを投稿