复制地图有多贵?

时间:2011-06-13 06:12:05

标签: c++ performance

我的map<EntityState, boost::weak_ptr<Animation>>课程中有EntityRepresentation。我想要为表示创建一个Builder类,但我必须考虑复制地图的成本。

EntityState复制起来很便宜,因为它只是一组静态函数; boost::weak_ptr复制也很便宜。整个地图怎么样?

4 个答案:

答案 0 :(得分:4)

不要过早优化。在许多情况下,构建器类的运行时性能不会成为瓶颈。

通常,复制地图的复杂性为O(n)。从评论中看,n看起来很小。如果您确定确实需要优化,那么在这种情况下,使用两个向量在访问项目和复制时都会更便宜。

答案 1 :(得分:2)

这取决于它拥有的物品数量。我不认为自己的成员会造成很多问题。

答案 2 :(得分:1)

我很惊讶没有其他人提到过Copy Elision。

此概念允许编译器在可能的情况下删除副本。因此,您的构建器实现可能只是将EntityRepresentation构建到“返回”插槽中,并避免所有副本。此时你的担心没有实际意义。

答案 3 :(得分:0)

在分析器说你必须这样做之前我不会担心,但一般来说,地图中每个元素会有一个分配,这可能会产生重大影响。