相关疑难解决方法(0)

字符串连接vs String Builder.性能

我有一种情况,我需要连接几个字符串,以形成一个类的ID.基本上我只是循环一个列表来获取对象的ToString值,然后连接它们.

foreach (MyObject o in myList)
  result += o.ToString();
Run Code Online (Sandbox Code Playgroud)

该列表预计不会有超过5个元素(虽然它可以但这是一个非常非常边缘的情况)并且通常会有1到3个元素,通常只有一个或两个元素.

什么会更多的性能,保持连接或使用StringBuilder?

StringBuilder bld = new StringBuilder()
foreach (MyObject o in myList)
  bld.Append(o.ToString());
Run Code Online (Sandbox Code Playgroud)

我不确定在最常见的情况下,创建StringBuilder是否会花费比标准串联更多的时间.

这是懒惰的,列表中的项目一旦创建就不会改变,因此在调用时id会被懒惰地构造一次.

作为旁注...我应该使用固定数组而不是List吗?如果我这样做,我会获得任何性能或内存改进吗?(列表仅用作IEnumerable)

问题的一般观点可能是,有多少字符串足以阻止连接并开始构建?

我是否应该费心去测试这种情况呢?

if (myList.Count > 4) 
  ConcatWithStringBuilder(myList);
Run Code Online (Sandbox Code Playgroud)

c# string performance

28
推荐指数
4
解决办法
4万
查看次数

标签 统计

c# ×1

performance ×1

string ×1