问题是,重写变量比读取比较更有效吗?
假设您有以下代码:
代码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;
}
哪种代码效率更高?
答案 0 :(得分:0)
读取和写入都需要一个处理器周期(或者甚至更少,取决于处理器架构):因此第二个选项稍微有点“低效”,因为它将导致200,001次操作(100,000次增量,100,000次)比较第一个,它将进行200,000次操作(100,000次增量和100,000次分配)。
虽然有一点摩擦。您的编译器可能会识别第一个循环的无意义,并将其优化为333到变量x的单个赋值。它将完全消除循环,以及重复相同的分配。因此,将有一个,而不是200,000个操作,或200,001个。