c++ - C++ 中的快速函数对象?

标签 c++ performance function object functional-programming

我正在编写一个科学计算程序,我最感兴趣的(在正确性之后)是速度。最近我注意到我也需要可读代码。 :)

代替写作

for (int k=0;k!=10;k+=1)
   array[k] = fun(a, k);

我正在考虑写作

class fun_t {
private:
   type a;
public:
   fun_t(type in) : a(in) {};

   type operator() (int k) {
      ...computation...
   }
};
...
fun_t fun(a);
for (int k=0;k!=10;k+=1)
   array[k] = fun(k);

函数对象样式会和第一个例子一样快吗?我可以期待两者有相同的内联吗?有更好的方法吗? (请注意,我只是在这里提出想法,这不是我的实际代码。)

最佳答案

我想繁重的计算是在您的函数内部执行的。相比之下,直接函数调用和成员函数调用的区别应该是微不足道的。

关于c++ - C++ 中的快速函数对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13067432/

相关文章:

mysql - count(*) 在 MyISAM 表中太慢了

performance - Rust编译器会自动删除不必要的中间变量吗?

c - 使用回调函数指针传递变量

另一个函数中的 C 函数声明

c++ - 转换一串整数的最有效方法是什么,例如(1,5,73,2) 成一个整数数组?

c++ - 如何避免强制转换运算符() 和访问运算符[] 冲突?

javascript - 如何识别 AJAX 或 XMLHttpRequest 调用中的调用函数名称?

php - 找到一个隐藏的 PHP 函数?

c++ - 使用 S.E.A.L. 对产品进行添加。图书馆

c++ - 确保 VS 2008 将我的项目视为 C++ 而不是 C++/CLI