google::dense_hash_map vs std::tr1::unordered_map?
google::dense_hash_map vs std::tr1::unordered_map?
我正在为几个平台(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_map
、boost::unordered_map
和std::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
。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 使用一个考虑到std::map中键值的滚动或换行的键
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 允许从 std::map 的密钥窃取资源?
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 使用字符数组作为 Map 中的键
- C++如何创建 std::map
- C++ equivalent to Java Map getOrDefault?
- 从其他容器中移动构造"std::map"
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- c value_type对于std :: tr1不起作用:std :: map中的元组
- 对于std::tr1::unordered_map,是否存在类似于std::map::lower_bound的等效std