我很好奇。该场景是具有例如的web应用/站点。 100个并发连接和每秒许多(20?)页面加载。
如果应用需要服务器格式化字符串
string.Format("Hello, {0}", username);
“Hello,{0}”会被实习吗?或者它只会被实习
string hello = "Hello, {0}";
string.Format(hello, username);
其中,关于实习,会提供更好的表现:上述或
StringBuilder builder = new StringBuilder()
builder.Append("Hello, ");
builder.Append(username);
甚至
string hello = "Hello, {0}";
StringBuilder builder = new StringBuilder()
builder.Append("Hello, ");
builder.Append(username);
所以我的主要问题是: 1)是否会实现string.Format文字 2)是否值得为stringbuilder设置变量名以进行快速查找,或者 3)查找本身是否很重(如果上面的#1是否)
我意识到这可能会带来微小的收益,但正如我所说,我很好奇。
答案 0 :(得分:6)
有一个静态方法String.IsInterned(str)方法。你可以做一些测试并找出答案!
http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx
答案 1 :(得分:3)
String.Format实际上在内部使用了StringBuilder,因此没有理由直接在代码中调用它。就文字的实习而言,两个代码版本是相同的,因为C#编译器将创建一个临时变量来存储文字。
最后,网页实习的影响可以忽略不计。页面渲染本质上是一种重型字符串操作操作,因此实际差异可以忽略不计。通过使用页面和控件缓存,您可以以更简单的方式获得更大的性能优势。
答案 2 :(得分:0)
快速回答:运行100k迭代并查找。
答案 3 :(得分:0)
你无法击败
return "Hello, " + username;
如果你的情景非常简单。