what is the difference between these two methods?
Is one more efficient than the other?
I was thinking maybe the AppendText() uses a method similar to the StringBuilder, ie it uses its own cache instead of creating and appending a new string each time, is that true?
Thanks.
AppendText() is an inbuilt File class method which is used to create a StreamWriter that appends UTF-8 encoded text to an existing file else it creates a new file if the specified file does not exist. Syntax: public static System. IO. StreamWriter AppendText (string path);
Text box controls allow entering text on a form at runtime. By default, it takes a single line of text, however, you can make it accept multiple texts and even add scroll bars to it.
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
Multilineproperty is set tofalsethen Concatenation (+=) yields better results but on other handMultilineproperty is set totruethenAppendTextyields 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_Clickoutput ontxtTimewas37222129almost 3-4 seconds for 10000 iterationbtnConcante_Clickoutput ontxtTimewas14449906487more 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_Clickoutput ontxtTimewas39862280almost 3-4 seconds for 10000 iterationbtnAppendText_Clickoutput ontxtTimewas1043279672almost 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With