我有很多对象(例如 10.000,或多或少)。每个对象都有 3 个值:
- 索引(十进制,如0,0 <= X <= 100.000,9);
- 纬度值;
- 经度值;
由于索引值,我需要执行一些搜索。这将是轻松的方法?List<MyObject>
? 我知道有哈希表,但仅适用于 2 个值...
我从 .csv 文件中读取这些值,并将其存储在应用程序中。网络表单,.NET 4.5。
就内存使用而言,最简单的方法是将它们放入一个结构中,并将它们保存在此类结构的数组中。根据您的说法,您无法真正将数据打包得更紧:两个双精度和一个小数将占用每个条目 32 个字节,并且结构数组不会在此之上添加任何每个项目的开销。
话虽如此,这会减慢您的编码速度,并且在实践中可能节省的时间太少。
你为什么不使用这样的字典:
public class Position
{
public Latitude Latitude { get ; set ; }
public Longitude Longitude { get ; set ; }
}
public Dictionary<decimal,Position> Positions ;
或者使用字典中的元组:
public Dictionary<decimal,Tuple<Latitude,Longitude>> Positions ;
我相信绝对最轻的方法是将您的值位掩码为无符号长整数,尽管它有点麻烦。
为了真正掌握哪种方法最有效,我建议使用测试值尝试所有方法并查看 sizeof() 的输出。这样你就可以确定它们的运行时内存大小是多少。
我建议使用自定义结构来保存您的值,元组也可以工作。