c++ int比较效率



以下代码段的性能有什么不同吗?哪一个表现最好,为什么?

int i = 1000000000;
while(i != 0) { i--; }

int i = 1000000000;
while(i) { i--; } 

int i = 1000000000;
while(i > 0) { i--; }

我看到很多人用第一个例子,想知道为什么。更容易阅读?

在这种情况下它们都是相同的,任何像样的编译器都会为这三者生成相同的代码。在任何情况下,尝试手动优化像这样的琐碎事情(整数比较)是毫无意义的。您的编译器会找出它,并在代码生成期间比您做得更好。所以不要再尝试了,只要写出你能读的最可读的代码,然后信任编译器——在任何情况下,这些都不会对性能产生任何影响。

以下代码段的性能有什么不同吗?

前两个是等价的,所有三个都可以优化成完全相同的汇编。

我看到很多人用第一个例子,想知道为什么。更容易阅读?

它要求读者知道的语言规则比第二种少。特别地,第二个程序需要知道条件表达式被转换为bool,并且从int转换得到与零不等式相同的结果。

注意,如果i被替换为浮点数,或者如果减量被修改为更复杂(例如:减量2),那么第三个选项将是最容易证明正确的。对于整数和单次递减,没有区别。

最新更新