C# 里面关于Stopwatch的一个简单问题!!高分!!!

我在程序里面,想测试1个算法的运行时间。然后就用了Stopwatch这个方法。分别用Start()和Stop()来卡住这个算法。(我的问题就是,我发现。如果我不间断地连续... 我在程序里面,想测试 1个算法的运行时间。 然后就用了 Stopwatch这个方法。 分别用 Start()和 Stop()来卡住这个算法。 (我的问题就是,我发现。 如果我不间断地连续测试这个算法的运行时间。 那么第一次的测试时间结果总是比之后测试时间结果大很多(我测试的是相同的算法)。请问这是为什么呢??? 按道理说,第一次和之后的运行时间应该是一样的呀.

代码附上:

using System;

using System.Diagnostics;
using System.Threading;

namespace Assignment2
{
class MainClass
{

static string P = "Butters";

static int m = P.Length;

public static void Main (string[] args)
{

string T="ewbfjkewbvuttersjbfjk";

for (int i = 0; i < 10000; i++) {

T = T +"fhqwiuwbuvjwberuwgbi3butterkvbjewj3frbwfjb";

}

T = T + "Buttersdniufwbk";

int n = T.Length;

mean1 (T, n);

mean1 (T, n);

mean1 (T, n);

mean1 (T, n);

}

static void mean1(string T,int n)
{

Stopwatch stopwatch = new Stopwatch ();

stopwatch.Start ();

for(int i=0;i<= n-m;i++)
{

int j=0;

while(j<m && P[j]==T[i+j])
{

j = j+1;
}

if(j == m)
{
Console.WriteLine(i);

break;
}

}

Console.WriteLine ("The executive time for A1 will be: ");

stopwatch.Stop ();
Console.WriteLine (stopwatch.ElapsedTicks);

}

}
}
展开
 我来答
sqc1999
2015-10-03 · TA获得超过272个赞
知道小有建树答主
回答量:419
采纳率:0%
帮助的人:352万
展开全部
因为第一次测试时像StopWatch.Start(),StartWatch.Stop(),Console.WriteLine()等方法在你的程序里是首次调用,所以要进行JIT编译,消耗了一定的时间。
追问
我用的电脑是 苹果的Mac, 那么有什么办法可以第一次就直接显示出算法的耗时么?
追答
先调用一次,不输出耗时,第二次调用时输出的要是就较准确了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式