首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对gcc O3优化旗的质疑

对gcc O3优化旗的质疑
EN

Stack Overflow用户
提问于 2013-10-28 20:31:17
回答 1查看 834关注 0票数 5

我有g++ 4.7.3编译器。我试图遵循优化标志描述http://gcc.gnu.org/onlinedocs/gcc-4.7.3/gcc/Optimize-Options.html,并有下一个问题:

我有一个程序,它使用-O2和-O3标志提供不同的时间。-O2比-O3快两倍。O2的时间是8ms,O3是16 is。

所以我想了解到底什么才是不同的。在上面的链接中,我看到:

"O3进行了更多的优化。-O3打开了-O2指定的所有优化,还打开了-finline-函数、-funswitch-循环、-fpredictive、-fgcse、-fpredictive和-fipa克隆选项。“

因此,我只需使用-O2并添加所有描述的标志:

代码语言:javascript
复制
-O2 -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone

时间是30毫秒。,但是这组选项应该是等效的和-O3。为什么时间不一样?我在哪里做错事?

结果重现性好,精密度为1ms。

我已经检查了选项

代码语言:javascript
复制
g++ -c -Q -Ox --help=optimizers

并且看到O3还有一个额外的选项:-ftree-循环-分发模式。但是,当我添加它时,选项设置如下:

代码语言:javascript
复制
-O2 -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone -ftree-loop-distribute-patterns

速度仍然是30毫秒。

EN

回答 1

Stack Overflow用户

发布于 2013-10-28 21:02:10

您可以让g++向您展示-Q选项中哪些选项是活动的:

代码语言:javascript
复制
g++ -c -Q -O3 --help=optimizers

输出内容类似于:

代码语言:javascript
复制
  -O<number>
  -Ofast
  -Os
  -falign-functions                     [enabled]
  -falign-jumps                         [enabled]
  -falign-labels                        [enabled]
  -falign-loops                         [enabled]
  -fasynchronous-unwind-tables          [enabled]
  -fbranch-count-reg                    [enabled]
  -fbranch-probabilities                [disabled]
  -fbranch-target-load-optimize         [disabled]
  -fbranch-target-load-optimize2        [disabled]
  -fbtr-bb-exclusive                    [disabled]
  -fcaller-saves                        [enabled]
  -fcombine-stack-adjustments           [enabled]
  -fcommon                              [enabled]
  -fcompare-elim                        [enabled]
  -fconserve-stack                      [disabled]
  -fcprop-registers                     [enabled]
  -fcrossjumping                        [enabled]
  -fcse-follow-jumps                    [enabled]
  -fcx-fortran-rules                    [disabled]
  -fcx-limited-range                    [disabled]
  -fdata-sections                       [disabled]
  -fdce                                 [enabled]
ETC..
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19644541

复制
相关文章

相似问题

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