长话短说。
一位同事今天在看到我在 Perl 脚本中使用 while (1)
之后断言,for (;;)
更快。我认为,他们应该同样希望译员能够最大限度地消除任何差异。我设置了一个脚本,它将运行1,000,000,000次循环迭代和相同数量的 while 循环,并记录两次循环之间的时间。我找不到明显的差别。我的同事说,一位教授告诉他,while (1)
正在进行 1 == 1
和 for (;;)
的比较。我们用100倍的 C + + 迭代次数重复了同样的测试,结果差异可以忽略不计。然而,这是一个生动的例子,说明了编译代码相对于脚本语言的速度有多快。
长话短说。
如果你需要打破一个无限循环,有什么理由选择 while (1)
而不是 for (;;)
吗?
注意: 如果问题不清楚。这纯粹是几个朋友之间的一次有趣的学术讨论。我知道这不是一个所有程序员都应该为之苦恼的超级重要的概念。谢谢你们所有的精彩回答,我(我相信其他人)已经从这次讨论中学到了一些东西。
更新: 上述同事以下面的回应加入了讨论。
这里引用以防它被掩埋。
它来自一个 AMD 汇编程序员。他说,C 程序员 (人们)没有意识到他们的代码是低效的 但是现在,gcc 编译器非常好,把像他这样的人排除在外 他说,例如,并告诉我关于
while 1
vs 我现在使用它是出于习惯,但 gcc,特别是口译员 将在这两天执行相同的操作(处理器跳转) , 因为它们被优化了。