1

C++:編譯器優化我們的代碼的方式有多少?

我想知道所有可能的方式(或至少流行的方式),其中編譯器可以/優化我們用C++編寫的代碼嗎?我也想知道如何完成優化(在每種情況下)!

到目前爲止,我知道兩個優化,即,空基優化(EBO)和返回值優化(RVO)。還有什麼?我聽說過「const」優化,「未使用的變量」優化。他們是什麼?

+1

http://en.wikipedia.org/wiki/Category:Compiler_optimizations – icecrime 2010-12-03 07:45:16

+1

什麼是點? – avakar 2010-12-03 08:20:45

+0

點?哪個點? – Nawaz 2010-12-03 08:23:28

回答

4

令人難以置信的是廣泛的,因爲有很多的優化和編譯器編寫者總是想着多了起來。它們中有很多,一些針對運行時間進行優化,另一些針對二進制大小進行優化。許多也不是特別的C++,一般的編譯器優化技術是針對許多不同語言的編譯器/解釋器而實現的。

那麼幾個:

更多信息:

5

從標準文檔,第1.9節

4)這一規定有時被稱爲「爲假設」規則,因爲的實現可以自由地忽視本國際標準 的任何要求,只要結果就好像該要求已被遵守一樣,只要可以從觀察者確定該計劃的可行行爲。例如, 一個實際的實現不需要評估表達式的一部分,如果它可以推斷出它的值沒有被使用,也不會產生影響程序可觀察行爲的副作用。

因此,實際上符合標準的編譯器可以,只要它產生的所需結果進行任何優化。