【发布时间】:2012-03-23 09:08:39
【问题描述】:
var fillData = new List<int>();
for (var i = 0; i < 100000; i++)
fillData.Add(i);
var stopwatch1 = new Stopwatch();
stopwatch1.Start();
var autoFill = new List<int>();
autoFill.AddRange(fillData);
stopwatch1.Stop();
var stopwatch2 = new Stopwatch();
stopwatch2.Start();
var manualFill = new List<int>();
foreach (var i in fillData)
manualFill.Add(i);
stopwatch2.Stop();
当我从stopwach1 和stopwach2 获取4 个结果时,stopwatch1 的值始终低于stopwatch2。这意味着addrange 总是比foreach 快。
有谁知道为什么?
【问题讨论】:
-
如果您担心对 GC 敏感的性能(即在针对移动设备的 Unity 游戏中),AddRange 将 ToArray() 传入的集合,这是一个分配。提升容量和手动添加可能会更快。