首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用编译标志-o3复制数组

使用编译标志-o3复制数组
EN

Stack Overflow用户
提问于 2014-03-21 21:44:39
回答 2查看 97关注 0票数 1

当使用-o3编译下面的代码时,比不使用"-o3“多花大约50%的时间。这可能是什么原因呢?

代码语言:javascript
复制
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];
}
EN

回答 2

Stack Overflow用户

发布于 2014-03-21 21:47:59

摘自GCC docs (都是我的重点):

打开优化标志使编译器试图提高性能和/或代码大小,代价是编译时间和可能的程序调试能力。..。优化编译需要更多的时间和更多的内存来处理大型函数。使用-O,编译器试图减少代码大小和执行时间,而不执行任何需要大量编译时间的优化

这完全是意料之中的行为。基本上,你的编译器需要为你做更多的工作,这增加了编译时间。

票数 4
EN

Stack Overflow用户

发布于 2014-03-21 21:50:00

Optimize Options -

做了更多的优化。-O3会打开-O2指定的所有优化,还会打开-finline-function、-funswitch-loops、-fpredictive commoning、-fgcse-after-reload、-ftree-loop-vectorize、-ftree-slp-vectorize、-fvect-cost model、-ftree-pre pre和-fipa-cp-clone选项。

我的假设是,这些都是使用循环进行的代价高昂的优化。特别是循环向量化优化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22560534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档