DateTime dt1 = DateTime.Now;
if ((DateTime.Now - dt1).TotalMilliseconds >= 1)
{
dt2 = DateTime.Now;
count++;
}上面的代码,精度真小啊,本来执行900多次应该没问题的,
结果只执行了62次,问题是不是DateTime.Now里啊,
那个前辈能提供高精度的时间差呢?谢谢
if ((DateTime.Now - dt1).TotalMilliseconds >= 1)
{
dt2 = DateTime.Now;
count++;
}上面的代码,精度真小啊,本来执行900多次应该没问题的,
结果只执行了62次,问题是不是DateTime.Now里啊,
那个前辈能提供高精度的时间差呢?谢谢
时钟的分辨率大约为 10-15 毫秒。
http://topic.csdn.net/u/20091030/18/6511df72-0d0c-4a20-b3cb-8b13821db130.html
{
[DllImport("Kernel32.dll ")]
private static extern bool QueryPerformanceCounter(out long lpPerformanceCount); [DllImport("Kernel32.dll ")]
private static extern bool QueryPerformanceFrequency(out long lpFrequency); private long startTime, stopTime;
private long freq; public HiPerfTimer()
{
startTime = 0;
stopTime = 0; if (QueryPerformanceFrequency(out freq) == false)
{
// 不支持高精度计时
throw new Win32Exception();
}
} // 计时开始
public void Start()
{
Thread.Sleep(0); QueryPerformanceCounter(out startTime);
} // 计时结束
public void Stop()
{
QueryPerformanceCounter(out stopTime);
} // 持续时间,单位秒
public double Duration
{
get
{
return (double)(stopTime - startTime) / (double)freq;
}
}
}
自己创建一个类,然后实例,之后再试试啊
程序集: mscorlib(在 mscorlib.dll 中)
语法C#
public long Ticks { get; }属性值
类型: System.Int64
表示此实例的日期和时间的计时周期数。该值介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 之间。 备注每个计时周期表示一百纳秒,即一千万分之一秒。1 毫秒内有 10,000 个计时周期。
精度控制可以使用CPU主频折合出来。