[英]What is the most efficient method to measure time?
我处于这样一种情况,我需要每秒执行X次操作(刷新PictureBox或从套接字缓冲区中提取字节)。 我想知道是否有正确的方法来做到这一点。 我做了一些研究,但我找到了几种解决方法。
我可以在while循环中工作并不断询问操作系统现在是时候检查X是否已超过时间。(DateTime.UtcNow)
我可以在一个while循环中工作并让它睡一段时间。
我可以在while循环中工作并使用Clock类来检查已用时间。
使用Timer Class引发事件。
这些都是我所知道的定期发生事情的方式。 第二种方法不是很精确,但我把它放在这里是为了完成。 还有其他我应该注意的方法吗? 哪一个开销最小?
我正在使用VisualStudio 2015 C#和.NET 4.6.1版本
使用秒表,与DateTime.Now相比,使用高精度计时器
DateTime.Now适用于毫秒精度,而秒表则为微秒。
// Create new stopwatch.
Stopwatch stopwatch = new Stopwatch();
// Begin timing.
stopwatch.Start();
// Do something.
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(1);
}
// Stop timing.
stopwatch.Stop();
// Write result.
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
秒表专为此目的而设计,是衡量.NET中时间执行的最佳方法之一。
var watch = System.Diagnostics.Stopwatch.StartNew();
/* the code that you want to measure comes here */
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
Console.WriteLine(elapsedMs);
不要使用DateTimes来测量.NET中的时间执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.