代码改变世界

C#开方运算比加法运算快?

2009-01-14 10:10  Johnny Qian  阅读(1575)  评论(7编辑  收藏  举报

近日,在写C#程序的时候遇到了个很奇怪的问题:开方运算竟然比加法运算快!?

代码如下:

int stime1 = DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
int j = 0;
int k = 0;
for (int i = 0; i < 5000000; i++)
{
    k = j + 10000;
}

int etime1 = DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
//add_count.Text = (etime1 - stime1).ToString();
add_count.Text = etime1.ToString() + "&nbsp-" + stime1.ToString() + "&nbsp=" + (etime1 - stime1).ToString();


int stime2 = DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
for (int i = 0; i < 5000000; i++)
{
    System.Math.Sqrt(20);
}
int etime2 = DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
//sqr_count.Text = (etime2 - stime2).ToString();
sqr_count.Text = etime2.ToString() + "&nbsp-" + stime2.ToString() + "&nbsp=" + (etime2 - stime2).ToString();

很简单的几行代码,但跑出来的结果,让人很迷惑。

本想开方运算肯定比加法运算慢很多,而结果中开方运算反而比加法运算快!反复刷新N次,结果还是差不多。真是无语了~~~

但是在我的另外一个项目中,用的是相同一段代码,结果是比较正常的:

哪位高手能解释一下,小弟先行谢过了。