Click here to Skip to main content
Click here to Skip to main content
Go to top

StringConc vs StringBuilder Test

, 17 Jan 2007
Rate this:
Please Sign up or sign in to vote.
StringConc vs StringBuilder Test
<!-- Article Starts - DO NOT ADD HTML/BODY START TAGS-->

Sample Image - StringConc_vs_StringBuild.gif

Introduction

Because of the messages I received at one of my last article (Meta Tag Generator) regarding the efficiency of using StringBuilder or String Concatenation I decided to write a short application to demonstrate that StringBuilder is efficient only if the number of concatenations is enough big (in this case bigger than 500).
Thanks also to: http://channel9.msdn.com/ShowPost.aspx?PostID=14932

The code is very simple:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void UpdateTime()
        {
            int iterations = Int32.Parse(txtIterations.Text);   //how many times
            string theString = txtTheString.Text;               //text to be used
            DateTime strCall = DateTime.Now;
            string targetString = null;
            for (int x = 0; x < iterations; x++)
            {
                targetString += theString;                      //concatenation using string concatenation 
            }
            TimeSpan time = (DateTime.Now - strCall);           //time needed for simple concatenation
            txtConcatTime.Text = time.TotalMilliseconds.ToString();

            //StringBuilder
            DateTime inCall = DateTime.Now;
            StringBuilder sb = new StringBuilder(theString);
            for (int x = 0; x < iterations; x++)
            {
                sb.Append(theString);                           //use of StringBuilder
            }
            time = (DateTime.Now - inCall);                     //time needed for StringBuilder to finish the job
            txtStringBTime.Text = time.TotalMilliseconds.ToString();
            MessageBox.Show("done");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            UpdateTime();                                       //run the test
        }
    }
}



How the test works:
in Iterations textbox write how many times do you want to "concatenate" the string from TheString textbox (it is not important how long is this text). Pressing the button Test you'll see the result (time needed to do the job with string conc (+=) and StringBuilder)

Case1: Iterations = 10 => ConcatTime = 0; StringBTime = 0;
Case2: Iterations = 100 => ConcatTime = 0; StringBTime = 0;
Case3: Iterations = 500 => ConcatTime = 2.05; StringBTime = 0;
Case4: Iterations = 1000 => ConcatTime = 15.52; StringBTime = 0;
Case4: Iterations = 10000 => ConcatTime = 3881.55; StringBTime = 0;

My Conclusion: if the numbers of concatenations is not bigger than 100, the run time is the same (zero). This means that is not important what method you use, or use the method you like more.



License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

zeltera
Engineer
Israel Israel
No Biography provided

Comments and Discussions

 
GeneralStopwatch use Pinmemberzeltera28-Jan-07 7:30 
GeneralTotalMilliseconds is only accurate to 10ms PinmemberGregMiller20-Jan-07 8:37 
GeneralSource code missing PinmemberTBermudez18-Jan-07 4:46 
GeneralInaccurate Observation PinmemberMike Doyon18-Jan-07 2:27 
GeneralRe: Inaccurate Observation PinmemberJan Seda18-Jan-07 5:11 
GeneralNot correct PinmemberJan Seda18-Jan-07 1:02 
GeneralRe: Not correct Pinmemberzeltera18-Jan-07 1:08 
GeneralRe: Not correct [modified] PinmemberJan Seda18-Jan-07 1:30 
GeneralRe: Not correct PinmemberAlois Kraus18-Jan-07 2:19 
GeneralNot exact PinmemberItay Sagui18-Jan-07 0:23 
GeneralRe: Not exact Pinmemberzeltera18-Jan-07 0:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140926.1 | Last Updated 18 Jan 2007
Article Copyright 2007 by zeltera
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid