除了可以推斷loop
正文中未初始化值的事實之外,是否還有其他令人信服的理由讓loop
存在?Rust編譯器用`loop`和`true`做了什麼優化?
回答
除了你陳述你的意圖,沒有區別。一旦編譯器發生規範化,所有循環都是相同的。
請參閱example of a loop
in the Rust playground和the same example with a while true
。生成的程序集完全相同。編譯器會給出while true
的警告 - 例如使用loop
來代替。
你能以任何方式證明這一點嗎? – Shepmaster
@Shepmaster如果需要證明,您可以比較MIR或ASM輸出 – the8472
@ the8472只能證明程序集(和推測相關的優化)對於單個案例*是相同的*,這是一個相當低的欄。我可以想象即使達到那裏的路徑完全不同(因此具有不同的可用優化)而編譯成相同程序集的非常不同的代碼示例。 – Shepmaster
- 1. C#編譯器和JIT都做了什麼樣的優化?
- 2. 什麼是use_locking = True在TensorFlow優化器中做什麼?
- 3. 編譯器爲什麼不優化?
- 4. 編譯器優化
- 5. 編譯器優化
- 6. cordova編譯到底做了什麼?
- 7. range-for loop究竟做了什麼?
- 8. xcache - 啓用編碼器/解碼器/優化器/彙編器是做什麼的?
- 9. noexcept說明符和編譯器優化
- 10. GNU GCC編譯器優化和調試
- 11. Java編譯器優化
- 12. 克++編譯器的優化
- 13. 編譯器優化問題
- 14. 編譯器謂語優化
- 15. Requirejs優化器不編譯
- 16. 二郎編譯器優化
- 17. 編譯器優化實現
- 18. C++編譯器優化
- 19. 分析和優化編譯
- 20. double.IsNaN - 編譯器在這裏做什麼
- 21. golang編譯器將做什麼時fmt.Println()
- 22. 什麼是String.iter()在Rust中做什麼?
- 23. 哪個編譯器做了macport使用?
- 24. 爲什麼編譯器不能優化這兩條語句?
- 25. GWT編譯器優化:他們什麼時候安全?
- 26. 爲什麼編譯器無法優化std :: string concat?
- 27. 什麼是/優化C#編譯器密鑰的目的?
- 28. 什麼是Visual Studio中的C++編譯器優化技術
- 29. 什麼是java編譯器的優化級別?
- 30. LINQ在編譯器級別執行什麼類型的優化?
相關問題:https://stackoverflow.com/q/28892351/1233251 –
謝謝。但是,我認爲我的陳述:「它可以推斷出在循環體內設置的未初始化值的事實已經暗示我有興趣知道其他方法可以爲循環提供更多的編譯器優化途徑。 –
當然,我不會稱之爲重複。但它確實包含重要信息,包括外部資源。 –