c++ - 在C++中,当一个数组的元素在一个循环中被多次使用时,是不是把它赋值给另一个元素更好?

标签 c++ arrays loops vectorization

假设我有一个循环,可以对数组 x 进行一些数学运算。在每次迭代时在循环内分配一个临时 double 值更好还是我应该每次都使用 array[i]

我所说的更好是指使用 C++ 在性能方面。我想知道 C++ 是否有一些我正在破坏的矢量化或现金优化?

此外,如果我使用此数组调用一个函数,并且我可能多次需要一个函数的值怎么办,所以我通常对函数执行相同的操作。我认为这比多次调用该函数要好。

如果循环使用 omp parallel 怎么样,我认为这应该是安全的,对吗?

for(int i=0; i<N; i++){
    double xi = X[i];
    double fi = f(xi);
    t[i] = xi*xi + fi + xi/fi;
}

最佳答案

elcuco 是正确的。任何称职的编译器都能够优化这种微不足道的东西。这里重要的是代码的可读性,我个人认为 X[i] 在这种情况下更容易查看。

我会注意到,如果您重复进行很长的陈述,即 X.something.something.darkside[i][j],使用明确命名的引用可能是有意义的,即 auto & the_emperor = X.something.something.darkside[i][j].

关于c++ - 在C++中,当一个数组的元素在一个循环中被多次使用时,是不是把它赋值给另一个元素更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57266166/

相关文章:

java - 序数指示符的后缀

JavaScript 在二维数组中存储数据

c++ - 为什么我在执行以下代码时出错?

c++ - 我可以在 Qt 应用程序中使用现有的 native Windows COM 接口(interface)吗

java - 在 int 数组中搜索

javascript - 将数组转换为 JSON 数组

c++ - Tic Tac Toe 覆盖数组用户输入

循环内的 JavaScript 闭包——简单实用的例子

c++ - vector 存储对象

c++ - 提取共享内存的大小