Algorithm while(n>;0)和while(n!=0)的计算之间的差异

Algorithm while(n>;0)和while(n!=0)的计算之间的差异,algorithm,loops,while-loop,Algorithm,Loops,While Loop,while(n>0)和while(n!=0)的计算是否不同?基本上两者都是在相同的条件下退出。那么,是否存在应该使用其中一个的场景?或者,当被评估的循环次数相同时,它会通过改变循环条件来提高性能效率吗?除了条件不同之外,在性能方面没有差异。这取决于您的平台,但通常情况下,它的性能相同。 例如,对于x86体系结构,cmp运算符将同时用于或=。您可以阅读更多内容。一般来说,差异是中性的 无论如何,人们可能会恶意地想到像这样的特殊计划 while (n > 0) { ... n++; }

while(n>0)
while(n!=0)
的计算是否不同?基本上两者都是在相同的条件下退出。那么,是否存在应该使用其中一个的场景?或者,当被评估的循环次数相同时,它会通过改变循环条件来提高性能效率吗?

除了条件不同之外,在性能方面没有差异。

这取决于您的平台,但通常情况下,它的性能相同。
例如,对于x86体系结构,
cmp
运算符将同时用于
=。您可以阅读更多内容。

一般来说,差异是中性的

无论如何,人们可能会恶意地想到像这样的特殊计划

while (n > 0)
{
  ...
  n++;
}
vs


其中,编译器可以推断在第一个代码段中,测试只需要在第一次迭代时进行,并将
while
展开为
if

,这取决于
n
的起始值-如果以负值(或溢出)开始,则它们的行为完全不同。此外,我认为一条汇编指令的不同可能会对性能产生微小的影响,但这确实是毫无意义的微观优化……那么,你在哪里证明没有性能差异呢?@BinkanSalaryman,这是基于这样一个事实:典型CPU中条件跳转的机器指令在运行时没有差异。但是欢迎你证明我错了。@Henry:如果两种类型的测试的分支预测逻辑不同,那么行为可能会有所不同。(虽然我真的不相信他们会这么做。)很抱歉,我真的不理解你关于在第一种情况下展开if的观点。
if(n>0){…;n++;while(true){…;n++;}
好的,我认为n减小了:)。那么,如果代码以这种形式重写,性能会发生变化吗?@Vini:在任何情况下,都无法测量。
while (n != 0)
{
  ...
  n++;
}