【发布时间】:2021-11-19 04:06:27
【问题描述】:
auto lambdaFunction1 = [](someClass& obj, int x){/**/};
auto lambdaFunction2 = [&someClassObj, x](){/**/};
使用捕获变量或将它们作为参数传递的 lambda 是否会有任何性能差异?如果我处于可以使用任何东西的位置,我是否应该总是更喜欢其中一个选项而不是其他选项?有什么规则吗?还是只是喜欢谁的问题?
PS:我知道在同样的情况下我将没有这样的选择,例如使用 stl 算法,我问的是我可以同时使用这两种算法的情况
【问题讨论】:
-
唯一的判断方法是分析一个优化的构建,看看是否存在性能差异。优化器非常聪明。