假设我有一个循环,可以对数组 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/