我的map<EntityState, boost::weak_ptr<Animation>>
课程中有EntityRepresentation
。我想要为表示创建一个Builder类,但我必须考虑复制地图的成本。
EntityState
复制起来很便宜,因为它只是一组静态函数; boost::weak_ptr
复制也很便宜。整个地图怎么样?
答案 0 :(得分:4)
不要过早优化。在许多情况下,构建器类的运行时性能不会成为瓶颈。
通常,复制地图的复杂性为O(n)
。从评论中看,n
看起来很小。如果您确定确实需要优化,那么在这种情况下,使用两个向量在访问项目和复制时都会更便宜。
答案 1 :(得分:2)
这取决于它拥有的物品数量。我不认为自己的成员会造成很多问题。
答案 2 :(得分:1)
我很惊讶没有其他人提到过Copy Elision。
此概念允许编译器在可能的情况下删除副本。因此,您的构建器实现可能只是将EntityRepresentation
构建到“返回”插槽中,并避免所有副本。此时你的担心没有实际意义。
答案 3 :(得分:0)
在分析器说你必须这样做之前我不会担心,但一般来说,地图中每个元素会有一个分配,这可能会产生重大影响。