为了防止许多重新分配,我的代码中包含以下内容:
List<T> result = new List<T>(100);
是否需要在返回新列表之前致电
TrimExcess
?result.TrimExcess();
return result;
例如,目的是使前100个项目的分配更快。这是这样做的正确方法还是我需要做其他事情?
最佳答案
通过定义初始容量,您进行了必要的优化。
如果调用TrimExcess()
方法,可能会导致分配工作超出实际需要。TrimExcess()
的MSDN documentation说:
重新分配和复制大型列表的成本可能是
但是,如果TrimExcess方法不执行任何操作,则TrimExcess方法不执行任何操作
列表容量超过90%
据我了解,您甚至可能不会通过该调用更改列表中的任何内容。
在我看来,您确实从中获益不多。