1

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

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

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

我将收到这些项目的传入流(通常更新排名,有时会使以前的排名无效 - 例如可以通过将排名设置为 0 或无限来简化)。Identity 值的变化很少(并且可以快速转换为索引 0 到 N),OtherInfo 可以更改(但可以轻松存储在单独的查找数组中),最重要的是 Ranking 将快速更改. 我正在考虑 SortedCollection,但是每当排名变化(这很常见)听起来效率低下时,都需要删除和阅读项目。

任何允许更新项目及其在收藏中使用的收藏建议将不胜感激。

4

1 回答 1

1

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

我想说这是过早优化是万恶之源的情况之一。

于 2013-04-22T17:03:08.973 回答