日期:2014-05-18 浏览次数:21461 次
class Program
{
static int COUNT = (int)2e7;
static void Main(string[] args)
{
View();
}
static void View()
{
StringBuilder sb = new StringBuilder();
Stopwatch watch = new Stopwatch();
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
sb.Append("Test1");
watch.Start();
Test1();
watch.Stop();
}
else
{
sb.Append("Test2");
watch.Start();
Test2();
watch.Stop();
}
sb.AppendFormat(" : {0}\r\n", watch.ElapsedMilliseconds);
}
Console.WriteLine(sb);
}
static void work(int i)
{
i++;
}
static void Test1()
{
int number = 8;
number++;
for (int i = 0; i < COUNT; i++)
{
if (number > 10)
{
work(6);
}
else
{
work(5);
}
}
}
static void Test2()
{
int number = 8;
number++;
if (number > 10)
{
for (int i = 0; i < COUNT; i++)
{
work(6);
}
}
else
{
for (int i = 0; i < COUNT; i++)
{
work(5);
}
}
}
------解决方案--------------------
从汇编来说
第1种比第二种 多执行2*n-2 条 指令
1条比较 1条跳转
cpu处理的速度
P4 2.4Ghz(单核),也就是2.4 * (10 ^ 9)个时钟周期每秒,即2400000000。一般CPU每个时钟周期可以执行两条以上的汇编指令(这里没算分支预测,分支预测还会加倍)
48亿次循环后2者才差距1秒
基本上可以忽略