2.21. Improving String Comparison Performance
Problem
Your application consists of many strings that are compared frequently. You have been tasked with improving performance and making more efficient use of resources.
Solution
Use
the intern pool to improve resource usage and, in turn, improve
performance. The Intern
and
IsInterned
instance methods of the
string
class allow you to use the intern pool. Use
the following static methods to make use of the string intern
pool:
using System; using System.Text; public class InternedStrCls { public static void CreateInternedStr(char[] characters) { string NonInternedStr = new string(characters); String.Intern(NonInternedStr); } public static void CreateInternedStr(StringBuilder strBldr) { String.Intern(strBldr.ToString( )); } public static void CreateInternedStr(string str) { String.Intern(str); } public static void CreateInternedStr(string[] strArray) { foreach(string s in strArray) { String.Intern(s); } } }
Discussion
The CLR automatically stores all string literals declared in an
application in an area of memory called the intern
pool. The intern pool contains a unique instance of each
string literal found in your code, which allows for more efficient
use of resources by not storing multiple copies of strings that
contain the same string literal. Another benefit is speed. When two
strings are compared using either
the ==
operator or the
Equals
instance method of the
string
class, a test is done to determine whether each string ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.