0

问题是,重写变量是否比读取比较更有效?

假设您有以下代码:

代码 1

int x = 0;

for( int i = 1; i <= 10000; i++ )
{
    x = 333;
}

代码 2

int x = 0;

for( int i = 1; i <= 10000; i++ )
{
    if( x != 333 )    
        x = 333;
}

哪个代码更高效?

4

1 回答 1

0

读取和写入都需要一个处理器周期(或者甚至更少,具体取决于处理器架构):因此第二个选项的“效率”稍低一些,因为它将导致 200,001 次操作(100,000 次增量,100,000 次比较,以及一个分配)而不是第一个,它将执行 200,000 次操作(100,000 个增量和 100,000 个分配)。

不过有一点麻烦。您的编译器可能会认识到第一个循环的无意义,并将其优化为将 333 分配给变量 x。它将完全消除循环以及重复的相同分配。因此,将有一个,而不是 200,000 次或 200,001 次。

于 2013-08-05T05:46:34.910 回答