簡體   English   中英

GCC精心挑選的優化

[英]GCC handpicking Optimizations

我看到了這個線程,並且我有同樣的問題,但是這個問題並未得到真正的回答: GCC標准優化行為

我試圖弄清楚到底是什么標志在O1中引起了不可思議的性能提升。 我首先使用g++ -O1 -Q --help=optimizers找出設置了哪些標志,然后獲取每個已啟用的標志,並使用它們與g ++進行編譯。 但是輸出結果不同(二進制文件本身的大小不同)。

我該如何為g ++進行優化選擇?

並非所有優化都有單獨的標志,因此它們的組合不會生成與使用-O1或任何其他常規優化啟用選項( -Os-O2等)相同的代碼。 我還想像到,當您使用-O0 (默認值)時,許多特定的優化選項會被忽略,因為如果通常未啟用優化功能,則它們會忽略通過的傳遞。

若要縮小性能提升的范圍,可以嘗試使用-O1 ,然后有選擇地禁用優化。 例如:

g++ -O1 -fno-peephole -fno-tree-cselim -fno-var-tracking ...

但是您可能仍然沒有這種運氣。 可能是多種優化結合在一起可以提高性能。 這也可能是任何特定標志未涵蓋的優化的結果。

我還懷疑更好的緩存局部性會導致您的“令人難以置信的性能提升”。 如果是這樣,那可能是巧合,尤其是在-O1 通常,由於GCC能夠消除您的代碼塊,或者是因為它實際上沒有任何凈效果,總是導致計算出相同的值或調用了未定義的行為,所以通常會帶來性能的大幅提高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM