Hi!
I'm very interesting in when to use exactly the StringBuilder?
For example for something like this?:
String strTest1 = "This";
String strTest2 = "Test";
StringBuilder stbTest = new StringBuilder();
stbTest.Append(strTest1). Append("is a "). Append(stbTest);
can someone provide some sample codes when to use a StringBuilder?
And can someone tell me his experience about the performance of a
StringBuilder?
Regards,
gicio
Roy Osherove - 09 Nov 2003 18:16 GMT
A StringBuilder's main functionality is , as it's name implies, to build
strings. The fact is, in .Net, if you need to build a long string (using a
long loop for example) it would be much slower to accomplish by using
simple concatenation than it would be using a StringBuilder.
The speed improvement is very big. This is because internally, the
StringBuilder uses string pointers for concatenation, while a regular
concat operation actually creates a new string from each two concatenated
string, so if you do "a" + "b" you actually get 3 seperate string back,
a,c, and the result. in a loop doing this this is very slow. A
StringBuilder does not create new string instances and so is much faster.
When to use: Whenever you have a non trivial string that you need to build
dynamically using a loop (when creating XML strings for example).
Roy Osherove
http://www.iserializable.com
> Hi!
>
[quoted text clipped - 15 lines]
>
> gicio
Anders Borum - 09 Nov 2003 19:23 GMT
Hello!
> When to use: Whenever you have a non trivial string that you need to build
> dynamically using a loop (when creating XML strings for example).
When building Xml; Try to use the specific writers (e.g. the XmlTextWriter).
They support indented writing and helps you programatically write more
readably (and maintainable) code.
Otherwise the StringBuilder is a powerful class.

Signature
venlig hilsen / with regards
anders borum
--
Jj - 09 Nov 2003 20:42 GMT
StringBuilder is more efficient when you do string concatenating, especially
when you do that a lot vs. using += operator.
> Hi!
>
[quoted text clipped - 15 lines]
>
> gicio
Nick Wienholt - 09 Nov 2003 21:34 GMT
As the number of modification operations heads towards 10 and above,
StringBuilder becomes faster. If the number of modifications is small (as
it is in your example), String will be faster.
Nick Wienholt, MVP
Maximizing .NET Performance
http://www.apress.com/book/bookDisplay.html?bID=217
> Hi!
>
[quoted text clipped - 15 lines]
>
> gicio
Anders Borum - 09 Nov 2003 23:36 GMT
Doesn't that depend on the size of the strings being concatenated? The
longer the strings, the more memory to be copied ..

Signature
venlig hilsen / with regards
anders borum
--
Nick Wienholt - 09 Nov 2003 23:50 GMT
> Doesn't that depend on the size of the strings being concatenated? The
> longer the strings, the more memory to be copied ..
Yep - that's why there is no precise number of operations where it can be
said StringBuilder is better. Somewhere between 3 and 8 is what I have seen
in benchmarks, so my general recommendation is once you're at 10,
StringBuilder is definitely the way to go. The performance difference
between the two options is not dramatic till you start doing lots of
operations, so there is no point worrying about whether 4 or 7 is the
optimum number for a particular case.
Nick
Russ Bishop - 15 Nov 2003 19:28 GMT
What about doing lots of small operations? One could incur the overhead of
creating a stringbuilder, then clear it after each small operation (say
contat of 5 strings.) Ala:
sb.append(str1)
sb.append(str2)
(etc)
response.write(sb.tostring)
sb.remove(0, sb.length)
sb.append(newstr1)
sb.append(newstr2)
etc.
Thoughts?
-- russ
> As the number of modification operations heads towards 10 and above,
> StringBuilder becomes faster. If the number of modifications is small (as
[quoted text clipped - 22 lines]
> >
> > gicio
Klaus H. Probst - 10 Nov 2003 07:30 GMT
Aside from the other answers you've received, sometimes depending on what
you're doing it's actually better to use a memory stream. In some cases
you'll get 50-200% speed improvements. But we're talking *large* strings =)

Signature
____________________
Klaus H. Probst, MVP
> Hi!
>
[quoted text clipped - 15 lines]
>
> gicio