4

what is the difference in using the Append method of StringBuilder class and Concatenation using "+" operator?

In what way the Append method works efficient or faster than "+" operator in concatenating two strings?

Praburaj
  • 613
  • 8
  • 21

3 Answers3

7

First of all, String and StringBuilder are different classes.

String class represents immutable types but StringBuilder class represent mutable types.

When you use + to concatanate your strings, it uses String.Concat method. And every time, it returns a new string object.

StringBuilder.Append method appends a copy of the specified string. It doesn't return a new string, it changes the original one.

For efficient part, you should read Jeff's article called The Sad Tragedy of Micro-Optimization Theater

It. Just. Doesn't. Matter!

We already know none of these operations will be performed in a loop, so we can rule out brutally poor performance characteristics of naive string concatenation. All that's left is micro-optimization, and the minute you begin worrying about tiny little optimizations, you've already gone down the wrong path.

Oh, you don't believe me? Sadly, I didn't believe it myself, which is why I got drawn into this in the first place. Here are my results -- for 100,000 iterations, on a dual core 3.5 GHz Core 2 Duo.

1: Simple Concatenation 606 ms
2: String.Format    665 ms
3: string.Concat    587 ms
4: String.Replace   979 ms
5: StringBuilder    588 ms
Soner Gönül
  • 97,193
  • 102
  • 206
  • 364
  • 1
    I sadly can't upvote that answer enough for linking to Jeff Atwood's excellent article... –  Nov 17 '13 at 16:52
0

String are immutable so when you append, you actually create a new object in the background.

When you use StringBuilder, it provides an efficient method for concatenating strings.

To be honest, you are not really going to notice a big improvement if you use it once or twice. But the efficiency comes in when you use the StringBuilder in loops.

David Pilkington
  • 13,528
  • 3
  • 41
  • 73
0

When you concatenate two strings you actually create a new string with the result. A StringBuilder has the ability to resize itself as you add to it, which can be faster.

As with all things, it depends. If you are simply concatenating two small strings like this:

string s = "a" + "b";

Then at best there will be no difference in performance, but likely this will be quicker than using a StringBuilder and is also easier to read.

StringBuilder is more suitable for cases where you are concatenating an arbitrary number of strings, which you don't know at compile time.

Ashigore
  • 4,618
  • 1
  • 19
  • 39