相关疑难解决方法(0)

为什么lambdas可以通过编译器比普通函数更好地优化?

The C++ Standard Library (Second Edition)Nicolai Josuttis 在其着作中指出,编译器可以比普通函数更好地优化lambdas.

此外,C++编译器比普通函数更好地优化lambdas.(第213页)

这是为什么?

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

c++ optimization lambda compiler-optimization c++11

167
推荐指数
2
解决办法
2万
查看次数

lambdas是否像C++中的函数一样内联?

编译器内联lambda函数是否可以提高效率,因为它可以使用简单的标准函数?

例如

std::vector<double> vd;
std::for_each(vd.begin(), vd.end(), [](const double d) {return d*d;});
Run Code Online (Sandbox Code Playgroud)

或者由于缺乏优化而导致效率下降?

第二个问题:我可以在哪里检查我使用的编译器是否优化了内联函数调用,这些函数被发送到算法?我的意思是,如果函数 - 而不是函数对象 - 被发送到算法,最后一个获取指向函数的指针,并且一些编译器优化指向内联函数的指针而其他编译器没有.

c++ lambda stl c++11

45
推荐指数
3
解决办法
3万
查看次数

标签 统计

c++ ×2

c++11 ×2

lambda ×2

compiler-optimization ×1

optimization ×1

stl ×1