小编Omn*_*eff的帖子

新建一个具有非常大的初始容量的List <T>并填充它而不是简单地填充LinkedList <T>的性能

哪个更快,为什么:

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.

我的直觉说,同时分配一大块连续内存比在堆上任何地方分配许多小块更昂贵,因为连续内存的块不太可能已经存在.

谢谢!
杰夫

.net c# performance linked-list list

2
推荐指数
2
解决办法
2870
查看次数

标签 统计

.net ×1

c# ×1

linked-list ×1

list ×1

performance ×1