关于字符串实习表现的问题

Dav*_*her 3 .net c# performance string-interning

我很好奇.该场景是一个Web应用程序/站点,例如100个并发连接和每秒许多(20?)页面加载.

如果应用需要服务器格式化的字符串

string.Format("Hello, {0}", username);
Run Code Online (Sandbox Code Playgroud)

"Hello,{0}"会被实习吗?或者它只会被实习

string hello = "Hello, {0}";
string.Format(hello, username);
Run Code Online (Sandbox Code Playgroud)

就实习而言,这将提供更好的表现:以上或,

StringBuilder builder = new StringBuilder()
builder.Append("Hello, ");
builder.Append(username);
Run Code Online (Sandbox Code Playgroud)

甚至

string hello = "Hello, {0}";
StringBuilder builder = new StringBuilder()
builder.Append("Hello, ");
builder.Append(username);
Run Code Online (Sandbox Code Playgroud)

所以我的主要问题是:1)是否会对string.Format文字进行实习2)是否值得为字符串构建器设置变量名以进行快速查找,或者3)查找本身是否相当繁重(如果上面的#1是否为)

我意识到这可能会带来微小的收益,但正如我所说,我很好奇.

Joh*_*nan 6

有一个静态方法String.IsInterned(str)方法.你可以做一些测试并找出答案!

http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx