【发布时间】:2016-03-25 04:18:43
【问题描述】:
我正在处理每组大约 180 000 个条目的跟踪数据 (x,y,z)。 套数不固定,22-30左右。
所以在最坏的情况下,我必须处理 550 万个条目。
现在,集合的数量是固定的,所以我为每个集合使用了一个列表。
public class TrackingCoords
{
public int id,
m,
n;
public decimal x,
y,
z,
s;
public string timekey;
}
public static class Data {
public static List<TrackingCoords> lstcoords1 = new List<TrackingCoords>();
...
}
在不降低性能的情况下,您将如何组织动态数量的集合?数据可以用某种嵌套的List表示吗?
【问题讨论】:
-
使用properties。您在谈论什么样的性能下降?搜索?插入?
-
你能给我一个带有属性的ecample吗?搜索列表时性能下降。理想情况下,我需要每 0.04 秒(每秒 25 帧)从每个列表中找到一个条目
-
如何调用 HashSet 的显式成员? hashset["myList1"].x ?
-
见this。我不建议使用
HashSet,它只是检查重复项。要搜索部分数据匹配,您需要单独散列每个数据。如果你想通过 id 快速搜索,那么Dictionary<id, TrackingCoords>就可以了(注意id作为数据成员和键出现两次)。对于多个搜索,您可以使用嵌套字典,例如Dictionary<x, Dictionary<y, Dictionary<z, TrackingCoords>>>(不确定它是否是一个好的结构,但它非常快,除非您可以将xyz组合成一个键,否则会更快)。
标签: c# list data-structures bigdata