3

多くのオブジェクトがあります (10.000 など)。すべてのオブジェクトには 3 つの値があります:

  1. インデックス (0,0 <= X <= 100.000,9 などの 10 進数);
  2. 緯度の値。
  3. 経度の値。

インデックス値のために検索を実行する必要があります。これに対する軽いアプローチはどれですか?List<MyObject>? ハッシュテーブルがあることは知っていますが、2つの値のみ...

これらの値を .csv ファイルから読み取り、アプリケーションに保存します。Web フォーム、.NET 4.5。

4

3 に答える 3

4

メモリ使用の点で最も軽いアプローチは、これらを構造体に入れ、そのような構造体の配列に保持することです。あなたの言うことから、実際にはそれ以上にデータを詰めることはできません.2つの倍精度と10進数はエントリごとに32バイトを占有し、構造体の配列はアイテムごとのオーバーヘッドをこれに追加しません.

そうは言っても、これはコーディングを遅くし、実際にはあまり節約できないかもしれません。

于 2012-10-29T16:37:02.823 に答える
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 ;
于 2012-10-29T17:18:32.947 に答える
1

少し面倒ですが、絶対に最も軽いアプローチは、値をunsignedlongにビットマスクすることだと思います。

どれが最も効率的なアプローチであるかを実際に把握するには、すべてをテスト値で試して、sizeof()の出力を確認することをお勧めします。そうすれば、実行時のメモリサイズを確実に把握できます。

値を保持するカスタム構造体をお勧めします。タプルも機能する可能性があります。

于 2012-10-29T16:37:46.410 に答える