2017-06-03 43 views
3

除了可以推斷loop正文中未初始化值的事實之外,是否還有其他令人信服的理由讓loop存在?Rust編譯器用`loop`和`true`做了什麼優化?

+0

相關問題:https://stackoverflow.com/q/28892351/1233251 –

+0

謝謝。但是,我認爲我的陳述:「它可以推斷出在循環體內設置的未初始化值的事實已經暗示我有興趣知道其他方法可以爲循環提供更多的編譯器優化途徑。 –

+0

當然,我不會稱之爲重複。但它確實包含重要信息,包括外部資源。 –

回答

1

除了你陳述你的意圖,沒有區別。一旦編譯器發生規範化,所有循環都是相同的。

請參閱example of a loop in the Rust playgroundthe same example with a while true。生成的程序集完全相同。編譯器會給出while true的警告 - 例如使用loop來代替。

+0

你能以任何方式證明這一點嗎? – Shepmaster

+0

@Shepmaster如果需要證明,您可以比較MIR或ASM輸出 – the8472

+0

@ the8472只能證明程序集(和推測相關的優化)對於單個案例*是相同的*,這是一個相當低的欄。我可以想象即使達到那裏的路徑完全不同(因此具有不同的可用優化)而編譯成相同程序集的非常不同的代碼示例。 – Shepmaster