[英]Fastest type for std::map key?
我想使用图形的分区作为std :: map的关键
我可以将其表示为节点的std向量。 或者我可以将它转换为更紧凑的“自定义”二进制格式(bitset?)或字符串表示。
为了简单起见,我们可以说图形的分区没有固有的顺序。
哪个在插入和查找方面最快(注意这个地图的大小将是十亿个节点的顺序)
保持你的密钥类型,但使用boost的unordered_map
并为你的图分区编写自己的hash()
函数。
例如,如果顺序无关紧要,则可以按顺序不变的方式对每个节点进行散列。 如果您现在发布编码方式,我们可以提供更多帮助。
如果您要拥有那么多条目并且性能至关重要,我建议绝对使用unordered_map
。
如果您使用的是C ++ 1x,那么它就在标准库中; 否则你可以从提升中获得它。
如果性能非常关键,您可以更进一步使用boost :: intrusive 。 它包含标准库容器的“侵入式”版本:它们复制您插入的值的指针而不是值本身。 如果值很大,您将获得巨大的性能优势。
可靠回答此问题的唯一方法是回答任何优化问题的唯一方法:尝试并查看。
也就是说,我怀疑这两者之间存在很大差异,只要有一个有效的比较运算符就可以使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.