C++0x Lambda 开销

标签 c++ visual-studio-2010 lambda c++11 visual-c++-2010

在 C++0x(VS2010 下)中使用 lambda 表达式是否有任何开销?
我知道使用 function 对象会产生开销,但我指的是例如传递给 STL 算法的表达式。编译器是否优化了表达式,消除了看起来像函数调用的东西?我开始非常喜欢 lambda 表达式,但我有点担心速度损失。

提前致谢!

最佳答案

您“知道”函数对象会产生开销吗?也许你应该重新检查你的事实。 :)

与手动循环相比,对函数对象使用 STL 算法的开销通常为零。一个幼稚的编译器将不得不在仿函数上重复调用 operator(),但这对于内联来说是微不足道的,因此实际上开销为零。

lambda 表达式只不过是函数对象的语法糖。代码被编译器转换成函数对象,所以开销也为零。

关于C++0x Lambda 开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218821/

相关文章:

类中的 C++ 列表以存储用户输入

c++ - visual studio 窗口从其他类调用函数

C++11 - 模板、友元、decltype 和访问修饰符

c++ - 错误 C2065 : 'nowhere' : undeclared identifier

c# - Contains(),如何使用lambda反转

java - 任何类似过滤器的 lambda 操作不会丢弃吗?

c++ - 一个应用程序中的 MPI_Scatter 和 MPI_Bcast 解决方案。如何让分区打印分区大小

asp.net - 是否可以在 visual studio 解决方案中添加对网站项目的引用?

c++ - 是否可以在非托管代码中使用属性?

linq - 使用lambda表达式连接2和3表的简单示例