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

本文关键字:高效 集合 排序 对象 | 更新日期: 2023-09-27 18:10:34

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

让我们考虑下面的项定义:

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

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

任何建议,允许更新项目及其诉诸收集将不胜感激。

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

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

我想说,这是一个不成熟的优化是万恶之源的例子。