繁体   English   中英

考虑到睡眠时间,我该如何测量部分代码的时间?

[英]How can i measure time of some part of code considering sleep time?

我尝试这样:

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分钟内完成的。 这是具有教育意义的象牙,我必须考虑睡眠时间。 我怎样才能做到这一点?

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

有关说明,请参见此帖子: C#时间跨度vs TotalMilliseconds

我认为这是一个单位问题,请尝试直接从秒表获取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();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM