Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用编译标志-o3进行数组复制_C_Arrays_Gcc - Fatal编程技术网

C 使用编译标志-o3进行数组复制

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(;

当使用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(; 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你是在问关于数组拷贝的特定优化吗?或者这是一个关于优化的一般性问题?