Lambda VS 函数

新手上路,请多包涵

我刚完成对 lambda 表达式的学习,想知道在使用 cout 打印到控制台时,表达式或常规函数是否会执行得更快。

我应该使用

// Lambda expression
auto helloWorld = []()
{
    cout << "Hello World" << endl;
};

或者

// Normal function
void helloWorld()
{
    cout << "Hello World" << endl;
}

注意:我仍然是一个新手程序员,所以请随时指出我可能犯的任何错误。我只能学习

谢谢

原文由 Levi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 413
2 个回答

我认为 lambda 在使用 stl 类的函数时很优雅,或者您想要快速丢弃函数而不命名它们。

 sort(v.begin(),
     v.end(),
     [](int a, int b){ return a > b; }
);

但它并没有从功能上更快。

两者的拆卸。

     helloWorld1();
008112A0  mov         ecx,dword ptr ds:[813054h]
008112A6  push        8119A0h
008112AB  call        std::operator<<<std::char_traits<char> > (0811780h)
008112B0  mov         ecx,eax
008112B2  call        dword ptr ds:[813038h]
    helloWorld2();
008112B8  mov         ecx,dword ptr ds:[813054h]
008112BE  push        8119A0h
008112C3  call        std::operator<<<std::char_traits<char> > (0811780h)
008112C8  mov         ecx,eax
008112CA  call        dword ptr ds:[813038h]

两者都有相同的拆卸。

原文由 user1935024 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于涉及到 IO,所以在乎几个周期的效率是没有意义的。更重要的是简单。功能完全适合您提供的工作,并且无法被击败。对于只有 Lambda 才能解决的工作,…

当它们显然是一个很好的解决方案时,保留 lambda。它们的优势和成本使它们成为在复杂情况下使用的非常强大的工具。如果无法在 lambda 和普通函数之间进行选择,那么显而易见的选择不是 lambda。

原文由 user1646075 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题