繁体   English   中英

为什么 C++ 模板代码在我的 lambda 表达式中运行得更快?

[英]Why C++ template code runs faster in my lambdas?

我一直在做一些简单的矢量数据累积测试,想知道为什么会出现以下代码:

template<typename T>
T accum(typename vector<T>::const_iterator first, typename vector<T>::const_iterator last, T init) {
  for(; first != last; ++first)
    init += *first;
  return init;
}

运行速度比以下代码(均在 lamda 中)快?

test("Iterator/direct", table, [](auto& values) {
  auto sum {0.0};
  for(auto i = values.begin(); i != values.end(); ++i)
    sum += *i;
  return(sum);
});

在我看来,算法本身应该大同小异。

整个源代码(53 行)可以在这个 Gist 中找到。

使用 -O2 选项编译,执行时间几乎可以忽略不计。 非常感谢所有评论者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM