【发布时间】:2012-01-13 01:17:50
【问题描述】:
我想知道哪种数据结构可以为我的场景提供更好的性能...... 我的要求是: 可能有几百万条记录的巨大数据集,我只写一次,在执行期间我不会再更改它,我不需要它以排序方式存储.... 我正在考虑使用 List 但如果我使用 Linq 查询并且在 where 条件调用 InRange 性能非常糟糕......如果我做一个 foreach,性能不是那么好......我很确定有最好的方法(我正在考虑使用结构和/或实现 IEquatable 但性能没有提高...... 女巫是 C# 中用于在我的范围内以最佳性能进行查询的最快数据结构吗? 我想要的是一个存储数百万个 Rnage 类实例的数据结构
class Range
{
public int Low {get; set;}
public int High {get; set;}
public bool InRange(int val) { return val >= Low && val <= High; }
}
List 是一个逻辑示例,但我担心 List 类没有针对我的要求进行优化...因为它是排序的,我不需要排序,它对性能有很大影响...
感谢您的帮助!
【问题讨论】:
-
您到底想达到什么目的?数据集中存储了什么样的数据?你对数据集做了什么样的操作?另外我不太明白你的 Range 类与这个问题有什么关系,也许你可以解释一下你的代码更多。
-
你应该改写你的问题,你要做什么不是很清楚。据我了解,您有一个 Range 对象的集合,并且您想找到 InRange 返回 true 的对象,对吗?
-
是的,Thomas 你是对的......我想使用 List
来存储数百万个 Ranges,但是在表演方面,它的表现非常糟糕......所以我需要一个存储我的类(或最终在结构中更改它)更适合我的要求的其他方式: -
数据类型有什么特别之处可以帮助优化算法吗?例如,如果是年龄范围,知道数字在 0 到 130 之间会有所帮助。
-
不幸的是我想不出什么来优化它......
标签: c# list generics search data-structures