我正在尝试考虑维护小型固定有限数量对象(几十个)的有效方法,这些方法会非常频繁地更改(每秒至少几次,每秒几十次)。 是否存在现有的已排序集合,其具有更新现有插入项的键(排名)的功能?
让我们考虑以下项目定义:
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,但是只要排名发生变化(通常是非常频繁),就需要删除和读取项目。
任何有关收藏的建议,包括更新物品及其在收藏中的使用将受到赞赏。
答案 0 :(得分:1)
对于您正在报告的负载,我会说您应该使用一种数据结构,这样可以提高可维护性,而不必担心会挤出一些额外的CPU周期。使用SortedList或SortedSet,只有在遇到不可接受的结果时才会担心提高效果。
的案例之一