从这篇文章http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx:
现在,“从开始到结束已经过了多长时间?”的问题是一个完全不同的问题,而不是“现在几点了?”如果你想问的问题是关于一些操作需要多长时间花了,你想要一个高精度,高精度的答案,然后使用StopWatch类。它确实具有接近其精度的纳秒精度和精度。
问题是 - 如果我需要从开始到结束所需的时间,我应该使用什么,我需要20毫秒的精度?
StopWatch
具有更好的精度,所以我担心我会花费处理器时间来获得“超精确”,这是我不需要的。
DateTime.Now
具有我需要的精确度,但它也有很多额外的东西,如月,年等等。我再次担心这会让它慢得多。
答案 0 :(得分:3)
本文应该对您有所帮助:
http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/
一般来说,秒表是更好的选择,甚至是我个人的意见。
答案 1 :(得分:1)
StopWatch唯一(相当大的?)开销是QueryPerformanceFrequency的结合,确定StopWatch是否会以高分辨率频率继续运行。实际上只有在没有高分辨率频率的情况下它才是开销。否则是一个更快的选项,因为它获取WIN32 QueryPerformanceCounter调用的时间戳而不是DateTime.UtcNow.Ticks。
答案 2 :(得分:0)
从我在互联网上看到的内容,直到现在来自System.Diagnostics命名空间的StopWatch类是用于计时的最佳类。
如果您希望精度低于1毫秒,请记住使用Elapsed.TotalMilliseconds属性来检索已用时间,sw.ElapsedMilliseconds将以1毫秒的增量跳转。
using System;
using System.Diagnostics;
namespace MySolution
{
class Program
{
static void Main(string[] args)
{
var sw = Stopwatch.StartNew();
// code to be timed here
sw.Stop();
Console.WriteLine("Run time in ms = {0}", sw.Elapsed.TotalMilliseconds);
}
}
}