以下倒底那个方法最好?
方法<1>:
最简单,3步,全为赋值运算,所以速度最快.
不过要多用一个中间变量.
t=a;
a=b;
b=t;
方法<2>:
3个步骤,不但有赋值运算,还有算术运算,所以速度总体比第<1>种慢.但
只用了两个变量.
a+=b;
b=a-b;
a-=b;
方法<3>:
4个步骤,不但有赋值运算,也有算术运算,所以速度总体比第<2>种慢.也
只须两个变量.
a += b;
b -= a; b = -b;
a -= b;
如果需要多次反复运行这几句命令,如:做个小试验试速度:
for (i=0; i<30000; i++)
for(j=0; j<30000; j++)
{
a += b;
b -= a; b = -b;
a -= b;
}
很显然比
for (i=0; i<30000; i++)
for(j=0; j<30000; j++)
{
t=a;
a=b;
b=t;
}
运行起来花更多的时间(估计有一倍多,不信试试)
可是好多书上说a+=b;b-=a;b=-b;a-=b;的这种称为 复合的赋值运算 比前者生成的
目标程序代码更紧凑,效率更高......速度都慢了,高在哪?
或者说这是指那方面的效率高?内存占用率吗?
另外
a+=b;
b-=a;b=-b;
a-=b;
的这种方法到底用在什么地方多? 才体现了高效率?
方法<1>:
最简单,3步,全为赋值运算,所以速度最快.
不过要多用一个中间变量.
t=a;
a=b;
b=t;
方法<2>:
3个步骤,不但有赋值运算,还有算术运算,所以速度总体比第<1>种慢.但
只用了两个变量.
a+=b;
b=a-b;
a-=b;
方法<3>:
4个步骤,不但有赋值运算,也有算术运算,所以速度总体比第<2>种慢.也
只须两个变量.
a += b;
b -= a; b = -b;
a -= b;
如果需要多次反复运行这几句命令,如:做个小试验试速度:
for (i=0; i<30000; i++)
for(j=0; j<30000; j++)
{
a += b;
b -= a; b = -b;
a -= b;
}
很显然比
for (i=0; i<30000; i++)
for(j=0; j<30000; j++)
{
t=a;
a=b;
b=t;
}
运行起来花更多的时间(估计有一倍多,不信试试)
可是好多书上说a+=b;b-=a;b=-b;a-=b;的这种称为 复合的赋值运算 比前者生成的
目标程序代码更紧凑,效率更高......速度都慢了,高在哪?
或者说这是指那方面的效率高?内存占用率吗?
另外
a+=b;
b-=a;b=-b;
a-=b;
的这种方法到底用在什么地方多? 才体现了高效率?