我知道这个问题已经被问了很多次,但是通过谷歌搜索,我从未得到一个令我满意的答案。
我在某处读到,每个循环(for/while/do-while/until)最终都会在内部转换为goto语句,这是真的吗?
如果不是,哪种循环从性能上来说是最好的?请让我知道,如果有人知道的话?
我知道这个问题已经被问了很多次,但是通过谷歌搜索,我从未得到一个令我满意的答案。
我在某处读到,每个循环(for/while/do-while/until)最终都会在内部转换为goto语句,这是真的吗?
如果不是,哪种循环从性能上来说是最好的?请让我知道,如果有人知道的话?
正确的做法是学习足够的汇编语言,以便能够阅读编译器生成的代码。
然而,这些微观优化通常并不重要(除非在非常特定的领域)。
你写的任何循环结构都将被简化为这个形式。
使用任何一个好的编译器,这都不会有任何区别。每种类型的循环都可能导致相似的汇编代码。
最好使用一种最自然地表达您想要实现的目标的循环类型;这也使得编译器可以对其进行良好的优化。
编译器将您的所有源代码转换为目标处理器的汇编语言。汇编语言非常低级,没有像for
和while
这样的结构。汇编语言使用跳转语句,这相当于您高级语言程序中的goto
。
就性能而言,您使用哪种循环结构并不重要。
如果您想查看并比较生成的汇编代码,可以这样调用gcc:gcc main.c -S -O2
,然后查看包含程序汇编代码的生成的main.S
文件。
请确保包括-O2
或-O3
优化标志,因为比较没有打开优化的代码没有多大意义。