如何在考虑睡眠时间的情况下测量某些代码的时间?

时间:2015-02-25 04:24:42

标签: c#

我试试这个:

Stopwatch timer = new Stopwatch();
timer.Start();

for (i = 0; i < 100; i++) {
    //do here some stuff
    Thread.Sleep(500);
}

timer.Stop();
TimeSpan ts = timer.Elapsed;
Console.WriteLine(ts.Milliseconds);

它显示我49毫秒,但实际上它是在2分钟内完成的。这是教育方式,我必须考虑睡眠时间。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

Timespan.Milliseconds属性在减去经过的秒数,分钟数,小时数等后,返回时间跨度的毫秒部分。您可能需要TimeSpan.TotalMilliseconds

请参阅此帖子以获取解释:C# Timespan Milliseconds vs TotalMilliseconds

答案 1 :(得分:1)

我认为这是一个单位问题,尝试直接从秒表中获取ms,这对我有用:

    Stopwatch timer = new Stopwatch();
    timer.Start();

    for (int i = 0; i < 20; i++)
    {
        //do here some stuff
        Thread.Sleep(500);
    }

    timer.Stop();
    long ms =  timer.ElapsedMilliseconds;
    Console.WriteLine(ms);
    Console.ReadLine();

答案 2 :(得分:0)

使用秒表不准确,如果您想要精确测量某些代码的执行,则必须使用操作系统内置的性能计数器。 检查this