Tuesday, July 24, 2012

String vs. StringBuilder


Since C# strings are immutable, an existing string cannot be modified. So, if one tries to change a string either with the concatenation operator (+) or with the InsertPadLeftPadRightReplace, or SubString methods, an entirely new string is created—leaving the original string intact.
Therefore, operations which would alter strings—instead—cause additional memory to be allocated. Memory is a scarce resource. And, memory allocations are expensive in terms of memory and performance. Consequently, sometimes String class usage should be avoided.
The StringBuilder class is designed for situations when one needs to work with a single string and make an arbitrary number of iterative changes to it. Many StringBuilder class methods are the same as those of the String class. However, the string content of aStringBuilder class can be changed without the necessity of allocating additional memory. Thus, operations on the StringBuilder class will be much faster than operations on the String class in certain situations. Paradoxically, just the the opposite can be true in other situations.
The String class is optimized and quite efficient for most cases. On the other hand, if strings must be modified, then the String class can be a real resource waster. It must be appreciated that the String class is really very intelligent in its memory handling in most everyday programming situations.

No comments :

Post a Comment