高效C#排序固定数量的可变对象的集合

时间:2013-04-22 16:43:19

标签: c# performance sorting collections

我正在尝试考虑维护小型固定有限数量对象(几十个)的有效方法,这些方法会非常频繁地更改(每秒至少几次,每秒几十次)。 是否存在现有的已排序集合,其具有更新现有插入项的键(排名)的功能?

让我们考虑以下项目定义:

public class Item
{
    public decimal Ranking { get; private set; }
    public IIdentity Identity { get; private set; }
    public IOtherInfo OtherInfo { get; private set; }
}

我将有这些项目的传入流(通常更新排名,有时会使之前的排名无效 - 可以通过将排名设置为0或无限来简化)。身份值的变化很少(并且可以快速转换为索引0到N),OtherInfo可以更改(但它可以很容易地存储在单独的查找数组中),最重要的是排名会快速变化。 我正在考虑SortedCollection,但是只要排名发生变化(通常是非常频繁),就需要删除和读取项目。

任何有关收藏的建议,包括更新物品及其在收藏中的使用将受到赞赏。

1 个答案:

答案 0 :(得分:1)

对于您正在报告的负载,我会说您应该使用一种数据结构,这样可以提高可维护性,而不必担心会挤出一些额外的CPU周期。使用SortedListSortedSet,只有在遇到不可接受的结果时才会担心提高效果。

我想说这是premature optimization is the root of all evil

的案例之一