为了防止许多重新分配,我的代码中包含以下内容:

List<T> result = new List<T>(100);


是否需要在返回新列表之前致电TrimExcess

result.TrimExcess();
return result;


例如,目的是使前100个项目的分配更快。这是这样做的正确方法还是我需要做其他事情?

最佳答案

通过定义初始容量,您进行了必要的优化。
如果调用TrimExcess()方法,可能会导致分配工作超出实际需要。

TrimExcess()MSDN documentation说:


  重新分配和复制大型列表的成本可能是
  但是,如果TrimExcess方法不执行任何操作,则TrimExcess方法不执行任何操作
  列表容量超过90%


据我了解,您甚至可能不会通过该调用更改列表中的任何内容。
在我看来,您确实从中获益不多。

10-06 09:10