存储这些值的最轻的集合是什么?

时间:2012-10-29 16:34:03

标签: c# .net

我有很多对象(例如10.000,或多或少)。每个对象都有3个值:

  1. 索引(十进制,例如0,0< = X< = 100.000,9);
  2. 纬度值;
  3. 经度值;
  4. 我需要根据索引值执行一些搜索。这将是一个轻松的approch? List<MyObject>?我知道有哈希表,但只有2个值......

    我从.csv文件中读取这些值,然后将其存储在应用程序中。 WebForm,.NET 4.5。

3 个答案:

答案 0 :(得分:4)

就内存使用而言,最轻的方法是将它们放入一个结构中,并将它们保存在这样的结构数组中。根据你的说法,你不能真正打包数据比任何更紧:两个双精度数和一个十进制数将占用每个条目32个字节,并且结构数组不会在此基础上添加任何每个项目的开销。

话虽如此,这会减慢你的编码速度,并且在实践中可能会节省太少的东西。

答案 1 :(得分:2)

为什么不使用这样的词典:

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 ;

答案 2 :(得分:1)

我认为绝对最轻的方法是将你的值掩盖成无符号长,尽管它有点麻烦。

要真正掌握最有效的方法,我建议尝试使用测试值并查看sizeof()的输出。这样你就可以确定它们的运行时内存大小。

我建议使用自定义结构来保存您的值,元组也可以正常工作。