google::dense_hash_map vs std::tr1::unordered_map?

google::dense_hash_map vs std::tr1::unordered_map?

本文关键字:map tr1 unordered std vs hash google dense      更新时间:2023-10-16

我正在为几个平台(Android、iOS,有些甚至可能是未来的某种主机(开发手机游戏。

我正试图决定是使用tr1::unordered_map还是google::dense_hash_map从资源管理器中检索纹理(用于以后使用OpenGL进行绑定(。通常这种情况每秒会发生好几次(每帧N次,我的游戏运行速度约为每秒60帧(

注意事项是:

  • 性能(内存和cpu(
  • 便携性

欢迎任何想法或建议。

http://attractivechaos.wordpress.com/2008/10/07/another-look-at-my-old-benchmark/

http://attractivechaos.wordpress.com/2008/08/28/comparison-of-hash-table-libraries/

使用标准容器的STL。它们具有可预测的行为,可以在STL算法/迭代器中无缝使用。STL还为您提供了一些性能保证。

这也应该保证可移植性。大多数编译器都实现了新标准。

在我开发的一个C++项目中,我想知道类似的事情:tr1:unordered_mapboost::unordered_mapstd::map哪一个最好?我最终声明了一个typedef,它在编译时是可控的:

#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

然后,我可以在编译时控制使用哪一个,并对其进行分析。在我的情况下,可移植性最终变得更加重要,所以我通常使用std::map