これをラムダで参照するよりも値で渡す方が速いのはなぜですか? 参照による値による比較は、毎回 1 ~ 2% 高速です。
class Foo
{
private:
int value;
public:
Foo(int value) { this->value = value; }
std::function<int()> lambdaTestByValue();
std::function<int()> lambdaTestByReference();
};
std::function<int ()> Foo::lambdaTestByValue()
{
return [=]() { return value; };
}
std::function<int()> Foo::lambdaTestByReference()
{
return [&]() { return value; };
}
この場合、何が参照によって遅くなるのですか? これは、最適化の有無にかかわらず適用されます。