TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

C# StringBuilder Data Types

This C# benchmark measures StringBuilder Append performance. It tests data types.

StringBuilder appends different data types with overloads.

What data types are fastest to Append? We can optimize StringBuilder code by choosing between data types when possible. We investigate the performance of data types.

StringBuilder parameter types test

Append int:      12677 ms
Append char:      1328 ms [faster]

Append bool:      2268 ms
Append string 1:  2095 ms [faster]

Append char:      1344 ms [faster]
Append string 2:  1904 ms

Benchmark. First, when you call the Append or AppendLine methods on StringBuilder, you can pass in many different types. There are 19 overloads, many of which specify different types. Here we test the types for performance.

Note: This program is a simple benchmark framework that compares how similar data is appended.

C# program that tests data types

using System;
using System.Diagnostics;
using System.Text;

class Program
{
    static void Main()
    {
	const int m = 100000;

	// Char versus Int
	Stopwatch s1 = Stopwatch.StartNew();
	for (int i = 0; i < m; i++)
	{
	    StringBuilder s = new StringBuilder(1000);
	    for (int v = 0; v < 1000; v++)
	    {
		s.Append(1);
	    }
	}
	s1.Stop();
	Stopwatch s2 = Stopwatch.StartNew();
	for (int i = 0; i < m; i++)
	{
	    StringBuilder s = new StringBuilder(1000);
	    for (int v = 0; v < 1000; v++)
	    {
		s.Append('1');
	    }
	}
	s2.Stop();

	// Bool versus string
	Stopwatch s3 = Stopwatch.StartNew();
	for (int i = 0; i < m; i++)
	{
	    StringBuilder s = new StringBuilder(4000);
	    for (int v = 0; v < 1000; v++)
	    {
		s.Append(true);
	    }
	}
	s3.Stop();
	Stopwatch s4 = Stopwatch.StartNew();
	for (int i = 0; i < m; i++)
	{
	    StringBuilder s = new StringBuilder(4000);
	    for (int v = 0; v < 1000; v++)
	    {
		s.Append("True");
	    }
	}
	s4.Stop();

	// Char versus string
	Stopwatch s5 = Stopwatch.StartNew();
	for (int i = 0; i < m; i++)
	{
	    StringBuilder s = new StringBuilder(1000);
	    for (int v = 0; v < 1000; v++)
	    {
		s.Append('a');
	    }
	}
	s5.Stop();
	Stopwatch s6 = Stopwatch.StartNew();
	for (int i = 0; i < m; i++)
	{
	    StringBuilder s = new StringBuilder(1000);
	    for (int v = 0; v < 1000; v++)
	    {
		s.Append("a");
	    }
	}
	s6.Stop();

	Console.WriteLine("{0},{1},{2},{3},{4},{5}",
	    s1.ElapsedMilliseconds, s2.ElapsedMilliseconds,
	    s3.ElapsedMilliseconds, s4.ElapsedMilliseconds,
	    s5.ElapsedMilliseconds, s6.ElapsedMilliseconds);
    }
}

The benchmark is divided into three pairs. The first pair tests a one-character int against the same text in char format. The second pair tests a bool against the same text in string format.

And: The third pair tests a char against its same text in string format. It uses a one-character string.

Note: In this benchmark you can only fairly compare the three pairs against their other halves.

Results: Appending a char is faster than appending an int. A string was faster than a bool. And a char was faster than a string.

Summary. We compared equivalent StringBuilder appended values. Note that the code samples may not be exactly equivalent in all cases. It is usually fastest to append chars, then strings, and then other types. Ints are the slowest here.

StringBuilder Append Performance


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf