C 使用编译标志-o3进行数组复制
当使用gcc-o3编译下面的代码时,所需的时间比不使用“-o3”要长50%左右。 原因是什么C 使用编译标志-o3进行数组复制,c,arrays,gcc,C,Arrays,Gcc,当使用gcc-o3编译下面的代码时,所需的时间比不使用“-o3”要长50%左右。 原因是什么 const int stepsize = 2; for (j = 0; j < NOOFITERATIONS; j++) { for(i=0; i < ROUND_DOWN(SOMEBIGSIZE, stepsize); i+=stepsize) { c[i] = a[i] + b[i]; c[i+1] = a[i+1] + b[i+1]; } for(;
const int stepsize = 2;
for (j = 0; j < NOOFITERATIONS; j++) {
for(i=0; i < ROUND_DOWN(SOMEBIGSIZE, stepsize); i+=stepsize) {
c[i] = a[i] + b[i];
c[i+1] = a[i+1] + b[i+1];
}
for(; i < SOMEBIGSIZE; i++)
c[i] = a[i] + b[i];
}
const int stepsize=2;
对于(j=0;j
摘自(全部强调矿山):
启用优化标志会使编译器试图提高性能和/或代码大小,但代价是编译时间和调试程序的能力。[…]优化编译需要更多的时间和更多的内存 用于大型功能
使用-O,编译器试图减少代码大小和执行时间,而不执行任何需要大量编译时间的优化 这完全是意料之中的行为。基本上,编译器需要为您做更多的工作,这会增加编译时间。摘自(我的全部重点): 启用优化标志会使编译器试图提高性能和/或代码大小,但代价是编译时间和调试程序的能力。[…]
优化编译需要更多的时间和更多的内存 用于大型功能
使用-O,编译器试图减少代码大小和执行时间,而不执行任何需要大量编译时间的优化 这完全是意料之中的行为。基本上,编译器需要为您做更多的工作,这会增加编译时间- 进一步优化-O3打开-O2指定的所有优化,并打开 -finline函数,-funswitch循环,-fpredictive公共,-fgcse重新加载后, -ftree循环向量化,-ftree slp向量化,-fvect成本模型,-ftree部分预处理和 -fipa cp克隆选项 我的假设是这些都是昂贵的循环优化。。。尤其是循环矢量化优化。来自- 进一步优化-O3打开-O2指定的所有优化,并打开 -finline函数,-funswitch循环,-fpredictive公共,-fgcse重新加载后, -ftree循环向量化,-ftree slp向量化,-fvect成本模型,-ftree部分预处理和 -fipa cp克隆选项
我的假设是这些都是昂贵的循环优化。。。尤其是循环矢量化优化。实际上,您是在谈论编译时间还是执行时间?@user1147851您是在问数组拷贝的具体优化吗?或者这是一个关于优化的一般性问题?实际上你是在谈论编译时间还是执行时间?@user1147851你是在问关于数组拷贝的特定优化吗?或者这是一个关于优化的一般性问题?