你们到底测试过没有???? 测试机子 CPU:E8200(默认频率) 内存:2G ddr667 int a = 1000; int result = 0; Stopwatch sw = new Stopwatch(); sw.Start(); for (long i = 0; i < 10000000000; i++) { result = a * 7; } sw.Stop(); MessageBox.Show(sw.Elapsed.ToString()); int a = 1000; int result = 0; Stopwatch sw = new Stopwatch(); sw.Start(); for (long i = 0; i < 10000000000; i++) { result = (a << 3) - a; } sw.Stop(); MessageBox.Show(sw.Elapsed.ToString()); 每个方法做了6次测试,直接×7,平均时间是27.36s,而第二种方法位运算然后减去本身,平均时间是31.16s我暂时找到的最快的,就是直接×7
位移比较快点 int a = 123; int b = (a << 3)-a; MessageBox.Show(b.tostring());
int b = a << 3 - a;
x*7=x*(5+2)=5x+2x=10*x/2+2x155*7=1550/2+155*2=775+310=1085玩心算滴,和差倍半是他们的基本功,就好像我们写程序滴if--else是我们的基本功
int a = 123456
int b = a*7
咯
测试机子
CPU:E8200(默认频率)
内存:2G ddr667
int a = 1000;
int result = 0;
Stopwatch sw = new Stopwatch();
sw.Start();
for (long i = 0; i < 10000000000; i++)
{
result = a * 7;
}
sw.Stop();
MessageBox.Show(sw.Elapsed.ToString());
int a = 1000;
int result = 0;
Stopwatch sw = new Stopwatch();
sw.Start();
for (long i = 0; i < 10000000000; i++)
{
result = (a << 3) - a;
}
sw.Stop();
MessageBox.Show(sw.Elapsed.ToString());
每个方法做了6次测试,直接×7,平均时间是27.36s,而第二种方法位运算然后减去本身,平均时间是31.16s我暂时找到的最快的,就是直接×7
int a = 123;
int b = (a << 3)-a;
MessageBox.Show(b.tostring());