为什么与普通函数相比,编译器可以更好地优化lambda?

The C++ Standard Library (Second Edition)Nicolai Josuttis 在他的书中指出,与普通函数相比,编译器可以更好地优化lambda。


另外,C ++编译器比常规函数更好地优化了lambda。(第213页)


这是为什么?


我认为在进行内联时应该不再有任何区别。我能想到的唯一原因是,编译器可能具有更好的lambda本地上下文,这样可以做出更多的假设并执行更多的优化。


阿波罗的战车
浏览 481回答 2
2回答

尚方宝剑之说

因为当您将“函数”传递给算法时,实际上是在传递函数的指针,因此它必须通过指向函数的指针进行间接调用。使用lambda时,会将对象传递到专门针对该类型实例化的模板实例,并且对lambda函数的调用是直接调用,而不是通过函数指针的调用,因此很有可能是内联的。
打开App,查看更多内容
随时随地看视频慕课网APP