我是一个优化方面的新手。我一直在阅读一些有关如何优化c++代码的参考资料,但我很难将其应用到实际代码中。因此,我只想收集一些现实世界的优化技巧,以从下面的循环中尽可能地挤出CPU /内存的最大效益。
double sum = 0, *array;
array = (double*) malloc(T * sizeof(double));
for(int t = 0; t < T; ++t){
sum += fun(a,b,c,d,e,f,sum);
*(array+t) = sum;
}
其中a,b,c,d,e,f
都是double
类型,T
是int
类型。欢迎使用任何与内存对齐、并行性、OpenMP/MPI以及SSE指令有关的方法。编译器为标准gcc、Microsoft或常见的编译器。如果解决方案是特定于编译器的,请指定编译器及与解决方案相关的任何选项标志。
谢谢!
PS:忘记提到属性fun
。请假定它是一个没有循环且只由基本算术运算组成的简单函数。请把它看作是一个内联函数。
EDIT2:由于fun
的细节很重要,请忘记参数c、d、e、f,并假设fun
被定义为
inline double fun(a,b, sum){
return sum + a* ( b - sum);
}
*(array+t)
而不是更清晰的等效表达式array[t]
? - kennytm