for、while 和 do while 循环之间的性能差异?

Dra*_*SAN -2 c performance loops

c 中的 for、while 或 do...While 循环之间是否存在性能差异?

我的一位教授告诉我 for 循环在责骂我从未使用它们时更快(为了可读性,我认为 for 循环的可读性不如 (do...)while 循环)。

我手头没有编译器,也没有时间测试执行时间,如果有差异,我想知道为什么。

(我知道很多 SO 问题似乎很相似,但要么是在询问 while 与 do while,要么没有任何答案)

Jac*_*ack 5

一旦被编译成二进制代码,所有三个迭代语句的整体语义是相同的。

他们只是为同一件事提供不同的口味。性能取决于:

  • 循环体的复杂性
  • 计算结束条件/下一个迭代步骤的复杂度

由于它们都提供了它们,因此它们中的任何一个本身都没有性能差异。除非您考虑在任何情况下都不应该关心的无关紧要的小事情。

可能有一些优化技巧可以根据循环的类型来完成,但你不应该依赖它们,即使它们可能依赖于编译器,从你的角度来看毫无意义。