2017-06-27 7 views
1

現在私が書いているプログラム(ゲームエンジン)では、オブジェクトの配列に整数値(ID)を効率的にマッピングしたいと思います。これに最も適しているデータ構造はHashMapですが、オブジェクトの配列をループすることもできます。Vecと比較したHashMap値の反復

それは使用してHashMapの値を反復処理するためにどのくらい遅い:

for val in vec.iter() 

をした後、所定の位置に別のシステムを持つ:Vecを有し、かつ、それを反復処理に比べ

for val in map.values() 

IDをベクトルの異なるインデックスにマップするには?

HashMapアプローチには他にも欠点がありますか?

答えて

4

HashMapの反復は、値が厳密にパックされていないため、遅くなります。空のスロットがあります。

空きスロットの数は用途によって異なりますが、ピーク使用率が高い場合はほとんどが空です。HashMapは、はるかにコンパクトなVecよりもかなり遅くなります。私は両方のHashMapVecの良好な特性結婚ordermap推薦する。この特定のユースケースについては

  • 値はHashMapと同様の性能で、キーによってアクセスを、
  • 値がに保管されていますa Vec、空きスロットをインタリーブしないので、反復はVecを反復するのと同じパフォーマンスを持ちます。
+0

OrderMapは私が必要とするものを正確に行うようです!ありがとうございました! – Dramentiaras

関連する問題