The C++ Standard Library (Second Edition)Nicolai Josuttis 在他的书中指出,与普通函数相比,编译器可以更好地优化lambda。另外,C ++编译器比常规函数更好地优化了lambda。(第213页)这是为什么?我认为在进行内联时应该不再有任何区别。我能想到的唯一原因是,编译器可能具有更好的lambda本地上下文,这样可以做出更多的假设并执行更多的优化。
2 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
因为当您将“函数”传递给算法时,实际上是在传递函数的指针,因此它必须通过指向函数的指针进行间接调用。使用lambda时,会将对象传递到专门针对该类型实例化的模板实例,并且对lambda函数的调用是直接调用,而不是通过函数指针的调用,因此很有可能是内联的。
- 2 回答
- 0 关注
- 478 浏览
添加回答
举报
0/150
提交
取消