TextBox.Text += "string"; vs TextBox.AppendText("string");
As it is clearly mentioned in Remarks section of MSDN Documentation
The AppendText method enables the user to append text to the contents of a text control without using text concatenation, which, can yield better performance when many concatenations are required.
Your question,
what is the difference between these two methods?
We all know how TextBox.Text += something;
will work i.e. creating and appending a new string each time but how AppendText
works I could not find any code snippet whether internally it uses StringBuilder
or something else.
Is one more efficient than the other?
I think answer to above question will depend on the situation, (Based on Test case observation)
if
Multiline
property is set tofalse
then Concatenation (+=) yields better results but on other handMultiline
property is set totrue
thenAppendText
yields far better performance.
EDIT After reading the comment from Rawling I made a custom win-form solution in which I had a simple textbox
in which I appended a simple string hello
10000 times using a simple for-loop
private void btnAppendText_Click(object sender, EventArgs e)
{
txtText.Text = string.Empty;
DateTime startTime = DateTime.Now;
for (int i = 0; i < 10000; i++)
{
txtText.AppendText(s);
}
DateTime endTime = DateTime.Now;
txtTime.Text = (endTime.Ticks - startTime.Ticks).ToString();
}
private void btnConcante_Click(object sender, EventArgs e)
{
txtText.Text = string.Empty;
DateTime startTime = DateTime.Now;
for (int i = 0; i < 5000; i++)
{
txtText.Text += s;
}
DateTime endTime = DateTime.Now;
txtTime.Text = (endTime.Ticks - startTime.Ticks).ToString();
}
Output were very surprising,
TEST 1: Multiline property is true
I had to reduce the iteration to half i.e. 5000 for text concatenation as it was taking a very long time.
btnAppendText_Click
output ontxtTime
was37222129
almost 3-4 seconds for 10000 iteration
btnConcante_Click
output ontxtTime
was14449906487
more than 25 minutes for only 5000 iterations.
From the above result it is really clear that, AppendText
is much faster and more efficient (when Multiline
is true
) than Concatenation
TEST 2: Multiline property is false
btnConcante_Click
output ontxtTime
was39862280
almost 3-4 seconds for 10000 iteration
btnAppendText_Click
output ontxtTime
was1043279672
almost 2-3 minutes for 10000 iteration
From the above result it is really clear that, Concatenation is faster and more efficient (when Multiline
is false
) than AppendText