我很好奇。该方案是一个具有EG 100并发连接的Web应用程序/站点,每秒许多(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)字符串。FormatLiflal被实习2)值得为StringBuilder设置可变名称以进行快速查找,或者3)是查找本身很重(如果上面的#1是否)

我意识到这可能会导致微不足道的收益,但是正如我所说的那样,我很好奇。

有帮助吗?

解决方案

string.format实际上在内部使用StringBuilder,因此没有理由在代码中直接调用它。就文字的实习而言,两个代码版本与C#编译器将创建一个临时变量来存储文字。

最后,在网页中实现的效果可以忽略不计。页面渲染本质上是一个重型的弦乐操作,因此实习所使的差异可以忽略不计。通过使用页面和控制缓存,您可以以更轻松的方式获得更大的性能优势。

其他提示

有一个静态方法string.isinterned(str)方法。您可以进行一些测试并找出答案!

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

快速答案:运行100k迭代并找出答案。

你不能打败

return "Hello, " + username;

如果您的场景真的那么简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top