469,641 Members | 1,106 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,641 developers. It's quick & easy.

C# : When exactly should a StringBuilder be used?

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
Jul 21 '05 #1
8 1467
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

On Sun, 9 Nov 2003 19:06:31 +0100, <gi***@web.de> wrote:
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

Jul 21 '05 #2
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.

--
venlig hilsen / with regards
anders borum
--
Jul 21 '05 #3
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
Sydney Deep .NET User Group www.sdnug.org

<gi***@web.de> wrote in message news:bo*************@news.hansenet.net...
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

Jul 21 '05 #4
Doesn't that depend on the size of the strings being concatenated? The
longer the strings, the more memory to be copied ..

--
venlig hilsen / with regards
anders borum
--
Jul 21 '05 #5
Jj
StringBuilder is more efficient when you do string concatenating, especially
when you do that a lot vs. using += operator.

Jianjun

<gi***@web.de> wrote in message news:bo*************@news.hansenet.net...
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

Jul 21 '05 #6
> 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
Jul 21 '05 #7
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 =)
--
____________________
Klaus H. Probst, MVP
http://www.vbbox.com/
<gi***@web.de> wrote in message news:bo*************@news.hansenet.net...
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

Jul 21 '05 #8
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
"Nick Wienholt" <go*********@hotmail.com> wrote in message
news:e6**************@TK2MSFTNGP09.phx.gbl...
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
Sydney Deep .NET User Group www.sdnug.org

<gi***@web.de> wrote in message news:bo*************@news.hansenet.net...
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


Jul 21 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

20 posts views Thread by Alvin Bruney | last post: by
8 posts views Thread by Henning M | last post: by
94 posts views Thread by Samuel R. Neff | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.