繁体   English   中英

关于gcc O3优化标志的疑问

[英]Doubts about gcc O3 optimisation flag

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

我有一个程序,它使用 -O2 和 -O3 标志给出不同的时间。 -O2 比 -O3 快两倍。 O2 时间为 8 毫秒,O3 时间为 16 毫秒。

所以我想了解究竟是什么有所作为。 在上面的链接中,我看到:

“O3 优化更多。-O3 打开 -O2 指定的所有优化,还打开 -finline-functions、-funswitch-loops、-fpredictive-commoning、-fgcse-after-reload、-ftree-vectorize 和 -fipa -cp 克隆选项。”

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

-O2 -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone

时间为30ms。 但是这组选项应该等价于-O3。 为什么时间不一样? 我在哪里做错了什么?

PS 所有结果都可以完美重现,精度为 1ms。


我已经检查了使用的选项

g++ -c -Q -Ox --help=optimizers

并看到 O3 还有一个附加选项:-ftree-loop-distribute-patterns。 但是当我添加它时,选项集:

-O2 -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone -ftree-loop-distribute-patterns

速度还是30ms。

您可以使用-Q选项让g++向您显示哪些选项处于活动状态:

g++ -c -Q -O3 --help=optimizers

输出类似于:

  -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..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM