boost :: bind的性能分析比较for for循环

时间:2014-12-01 10:46:23

标签: 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);
   }

进入

for_each(vec_face.begin(), vec_face.end(), boost::bind(hiddenCorner, other, bmap, _1));

显然它不那么冗长,但效率怎么样?

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

注意:vec_face不是一个非常大的设置。

1 个答案:

答案 0 :(得分:5)

  

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

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

所以显然你不仅没有试图自己衡量表现,你甚至没有测试它是否有效。没有cookie给你。

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