哪个更快,为什么:
IEnumerable<T> clxnOfTs = GetSeriouslyHugeCollection();
var list = new List<T>(clxnOfTs.Count);
foreach (T t in clxnOfTs) list.Add(t);
Run Code Online (Sandbox Code Playgroud)
要么
IEnumerable<T> clxnOfTs = GetSeriouslyHugeCollection();
var linkedList = new LinkedList<T>();
foreach (T t in clxnOfTs) linkedList.Add(t);
Run Code Online (Sandbox Code Playgroud)
假设这将在具有大量内存的新的多核服务器上运行.
实际上,问题在于是否预先分配一直支持List的数组然后填充它比简单地分配每个LinkedListNode更快,因为每个T都被添加到LinkedList.
我的直觉说,同时分配一大块连续内存比在堆上任何地方分配许多小块更昂贵,因为连续内存的块不太可能已经存在.
谢谢!
杰夫