在C ++中,当在循环中多次使用数组的元素时,将其分配给另一个元素更好吗?

Ism*_*sou 0 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;
}
Run Code Online (Sandbox Code Playgroud)

QCT*_*Dev 5

elcuco是正确的。任何值得一试的编译器都可以优化这个琐碎的东西。这里重要的是代码的可读性,我个人觉得X[i]在这种情况下要容易一些。

我会指出,如果您反复重复很长的声明,即X.something.something.darkside[i][j]使用明确命名的引用ie可能会有意义auto & the_emperor = X.something.something.darkside[i][j]