【发布时间】:2009-01-16 09:51:48
【问题描述】:
对于小型集合或地图,仅使用排序向量而不是基于树的 set/map 通常要快得多——尤其是对于 5-10 个元素的情况。 LLVM 有一些类 in that spirit,但没有真正的适配器可以提供类似 std::map 的接口,支持 std::vector。
有任何(免费)实现吗?
编辑:感谢所有替代想法,但我对基于矢量的集合/地图非常感兴趣。我确实有一些特定情况,我倾向于创建大量包含通常少于 10 个元素的集合/映射,并且我确实希望减少内存压力。例如,考虑三角形网格中顶点的相邻边,您很容易得到 100k 组,每组 3-4 个元素。
【问题讨论】:
-
我从未遇到过 std::sets 或 5 或 10 个元素的映射的性能问题...我认为您不会注意到任何事情。您是否正在创建超过一百万个非常小的 std::set?
-
是的,可能我面临的更重要的问题是每个集合分配了很多节点,这是我想避免的。
标签: c++ optimization