除了可以推斷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. 對於LOOP丟掉編譯器優化
- 3. 什麼是use_locking = True在TensorFlow優化器中做什麼?
- 4. 編譯器爲什麼不優化?
- 5. 編譯器優化
- 6. 編譯器優化
- 7. 什麼語言被用來編寫Rust編譯器?
- 8. cordova編譯到底做了什麼?
- 9. range-for loop究竟做了什麼?
- 10. LLVM編譯優化bug還是什麼?
- 11. xcache - 啓用編碼器/解碼器/優化器/彙編器是做什麼的?
- 12. 編譯器在這個彙編代碼中做了什麼?
- 13. 編譯器在優化代碼時在做什麼?即-O2標誌
- 14. gcc優化:-O0做什麼?
- 15. GNU GCC編譯器優化和調試
- 16. noexcept說明符和編譯器優化
- 17. GNU編譯器優化
- 18. C++編譯器優化
- 19. 編譯器優化實現
- 20. PHP編譯器優化
- 21. 編譯器謂語優化
- 22. 優化css編譯器
- 23. Requirejs優化器不編譯
- 24. 克++編譯器的優化
- 25. Java編譯器優化
- 26. 編譯器優化問題
- 27. 二郎編譯器優化
- 28. C++編譯器在讀取「int * p」時做了什麼?
- 29. 瞭解編譯器 - 一個什麼都不做的語句?
- 30. golang編譯器將做什麼時fmt.Println()
相關問題:https://stackoverflow.com/q/28892351/1233251 –
謝謝。但是,我認爲我的陳述:「它可以推斷出在循環體內設置的未初始化值的事實已經暗示我有興趣知道其他方法可以爲循環提供更多的編譯器優化途徑。 –
當然,我不會稱之爲重複。但它確實包含重要信息,包括外部資源。 –