簡體   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