2011-07-04 23 views
6

私はいくつかのプラットフォーム(Android、iOS、そして将来的にはいくつかの種類のコンソールも含む)のモバイルゲームに取り組んでいます。google :: dense_hash_mapとstd :: tr1 :: unordered_map?

tr1::unordered_mapまたはgoogle::dense_hash_mapを使用して、リソースマネージャからテクスチャを取得するかどうかを決定しようとしています(後でOpenGLを使用してバインドするため)。

  • 性能(メモリとCPU賢明)
  • ポータビリティ
  • :通常、これは毎秒かなりの数回(私のゲームは〜60 fpsで実行されているフレームあたりN)

    考慮事項があるが起こることができます

ご意見やご提案は大歓迎です。私が開発したC++プロジェクトで

+0

興味があります。なぜ、ハッシュマップを使用する必要がありますか?私は使用しているプラ​​ットフォームについては何も知らないが、あなたが説明する目的のためにちょっと変わったように聞こえる。 – Rookie

+0

テクスチャ管理のためのこの方法は珍しいことではありませんが、Ogre3Dは同様のアプローチを使用します(http://www.ogre3d.org/docs/api/html/classOgre_1_1TextureManager.html) – Goles

+2

これに適切な答えを与えることは不可能です質問。たぶんそれは全く違いがないでしょう。なぜそれを測定して見ないのですか? –

答えて

1

、私は似たような不思議でした:一つは、tr1:unordered_mapboost::unordered_mapまたはstd::map最高でしたか?私はその後、使用するかをコンパイル時に制御し、それをプロファイリングでき

#ifdef UnorderedMapBoost 
typedef boost::unordered_map<cell_key, Cell> cell_map; 
#else 
#ifdef UnorderedMapTR1 
typedef std::tr1::unordered_map<cell_key, Cell> cell_map; 
#else 
typedef std::map<cell_key, Cell> cell_map; 
#endif // #ifdef UnorderedMapTR1 
#endif // #ifdef UnorderedMapBoost 

:私は、コンパイル時に制御可能typedefを、宣言してしまいました。私の場合、移植性がより重要になったので、私は通常std::mapを使用します。

1

標準容器にはSTLを使用してください。それらは予測可能な振る舞いを持ち、STL algos/iteratorsでシームレスに使用できます。あなたはまた、STLによっていくつかの性能保証が与えられています。

これはまた、移植性を保証するはずです。ほとんどのコンパイラには新しい標準が実装されています。

関連する問題