除了可以推断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 –
谢谢。但是,我认为我的陈述:“它可以推断出在循环体内设置的未初始化值的事实已经暗示我有兴趣知道其他方法可以为循环提供更多的编译器优化途径。 –
当然,我不会称之为重复。但它确实包含重要信息,包括外部资源。 –