频繁插入已排序的集合

我已经对集合(List)进行了排序,我需要始终对其进行排序。

我目前正在我的集合上使用List.BinarySearch,然后在正确的位置插入元素。 我也尝试过每次插入后排序列表,但性能不可接受。

有没有可以提供更好性能的解决方案? 也许我应该使用其他collections品。

(我知道SortedList但它仅限于唯一键)

PowerCollections具有OrderedBag类型,可能适合您的需要。 来自文档

插入 ,删除和查找元素都是在log(N)+ M时间内完成的 ,其中N是树中键的数量,M是正在处理的元素的当前副本数。

但是,对于.NET 3.5内置类型,使用List.BinarySearch并将每个项目插入正确的位置是一个良好的开端 – 但是在内部使用数组,因此当您执行所有复制时,性能将下降插入。

如果你可以将插件分组成批次来改善,但除非你在所有插入后只能进行一次排序操作,否则如果可以的话,最好使用PowerCollections OrderedBag

如果您使用的是.Net 4,则可以使用SortedSet

http://msdn.microsoft.com/en-us/library/dd412070.aspx

对于.Net 3.5及更低版本,请查看SortedList是否适合您。

http://msdn.microsoft.com/en-us/library/ms132319.aspx

尝试将插入聚合为批次,并仅在每批次结束时进行排序。