C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
We test whether the string.Concat method is useful. Is there is a better alternative? We look at a way you can combine several characters.
Combine chars benchmarks CharCombine method: 520 ms Char concat: 1887 ms
Example. Here we see an optimization that deals with char arrays and the new string constructor. My other work shows that when you need to build a string char-by-char, you should use a char array for best performance.
C# program that combines four chars using System; class CharTool { /// <summary> /// Combine four chars. /// </summary> public static string CharCombine(char c0, char c1, char c2, char c3) { // Combine chars into array char[] arr = new char[4]; arr[0] = c0; arr[1] = c1; arr[2] = c2; arr[3] = c3; // Return new string key return new string(arr); } } class Program { static void Main() { char a = 'a'; char b = 'b'; char c = 'c'; char d = 'd'; char e = 'e'; // Use CharCombine method Console.WriteLine(CharTool.CharCombine(a, b, c, d)); Console.WriteLine(CharTool.CharCombine(b, c, d, e)); } } Output abcd bcde
This method receives four chars, which are two bytes each in the C# language. For calling it, you need to pass it four chars. These char values would be dynamic in a real program.
Tip: It is contained in a static class and is a static method, which is ideal for a utility method such as this. It does not save state.
Static Method, Class and Constructor
In the method body, it allocates a new char array with four elements. Then, it assigns slots at indices 0 to 3 to the four parameter chars. This is how it creates the buffer, which it uses in the return statement.
And: The new string(char[]) constructor is invoked in the return statement, which builds the string from the char buffer we created.
String ConstructorReturn Statement
Method result. The final result of the method is that the four char parameters are combined, joined into a single string. You can easily use this string in the rest of your program.
Benchmark. The alternative here is the string.Concat method, which you can use with "+" between the four chars with ToString(). It is much slower and does unnecessary things. Performance figures are shown above.
Varibles used in benchmarks: C# char a = 'a'; char b = 'b'; char c = 'c'; char d = 'd'; Code benchmarked in loops: C# 10000000 iterations benchmarked. // Custom method string s1 = CharTool.CharCombine(a, b, c, d); // [above] string s2 = CharTool.CharCombine(d, c, b, a); // Concatenation string s1 = a.ToString() + b.ToString() + c.ToString() + d.ToString(); string s2 = d.ToString() + c.ToString() + b.ToString() + a.ToString();
Summary. We allocated a char array as a buffer to store four chars. You can easily adapt the method to handle two, three, five, or even more chars, and it will likely perform well. We should be careful with the params keyword.