C++ boost::bind与for循环的性能分析

C++ boost::bind与for循环的性能分析,c++,boost,C++,Boost,我皈依了 for(std::set<shape::Face>::iterator face_iter=vec_face.begin(); face_iter!=vec_face.end(); face_iter++) { hiddenCorner(other, bmap, *face_iter); } 显然,它没有那么冗长,但效率如何 hiddenCorner是一个更新bmap的void函数(bmap是一个std::map) 注意:vec_face不是一个

我皈依了

  for(std::set<shape::Face>::iterator face_iter=vec_face.begin(); face_iter!=vec_face.end(); face_iter++)
   {
     hiddenCorner(other, bmap, *face_iter);
   }
显然,它没有那么冗长,但效率如何

hiddenCorner是一个更新bmap的void函数(bmap是一个std::map)

注意:vec_face不是一个真正的大尺寸套件

hiddenCorner是一个更新bmap的void函数(bmap是一个std::map)

bind
版本复制存储在活页夹中的
other
bmap
,然后将它们传递给函数,因此函数更新活页夹中的副本,而不是
bmap
本身

所以很明显,你不仅没有尝试自己测量性能,你甚至没有测试它是否有效。没有饼干给你

如果您使用
boost::ref
正确编写它,假设您启用了优化,那么它的性能应该大致相当

hiddenCorner是一个更新bmap的void函数(bmap是一个std::map)

bind
版本复制存储在活页夹中的
other
bmap
,然后将它们传递给函数,因此函数更新活页夹中的副本,而不是
bmap
本身

所以很明显,你不仅没有尝试自己测量性能,你甚至没有测试它是否有效。没有饼干给你


如果您使用
boost::ref
正确编写它,假设您启用了优化,它的性能应该大致相当。

为什么不测量它并找出答案?为什么不测量它并找出答案?在所有帐户上,+1:)在所有帐户上,+1:)
for_each(vec_face.begin(), vec_face.end(), boost::bind(hiddenCorner, other, bmap, _1));