c#检测某些动作时间的最佳方法
我试着做到以下几点:c#检测某些动作时间的最佳方法,c#,datetime,C#,Datetime,我试着做到以下几点: public class TimerTest { private DateTime start; public TimerTest() { start = DateTime.Now; } public TimerTest(string message) { Debug.WriteLine("DEBUG: " +
public class TimerTest
{
private DateTime start;
public TimerTest()
{
start = DateTime.Now;
}
public TimerTest(string message)
{
Debug.WriteLine("DEBUG: " + message);
}
public void Finish(string message)
{
var time = DateTime.Now - start;
var timeWent = String.Format("{0}.{1} sec.", time.Seconds, time.Milliseconds.ToString().PadLeft(3, '0'));
但看起来这是错误的…我认为部分问题在于您没有为每个呼叫实例化新的开始时间,所以您只是记录了与实例化时间的差异 如果您真的想获得代码执行所需时间的准确读数,更好的选项之一是Stopwatch类,如下所述:
构造函数重载
public TimerTest(string message)
{
Debug.WriteLine("DEBUG: " + message);
}
甚至不初始化时间变量。你是说这个构造器是
public TimerTest(string message)
{
Debug.WriteLine("DEBUG: " + message);
start = DateTime.Now;
}
我不知道你在问什么。根据你的代码,我希望得到输出。你能写出你认为输出应该是什么吗?请注意,这是一种糟糕的性能度量方法,请改用秒表。
DateTime
没有足够的精度来测量这么小的时间差。@Servy:我很惊讶他能看到1ms的时间差。我认为计时器的分辨率是几毫秒。“所以你只是记录了与时间实例化时的差异。”——正是我需要的!TimerTest的init和Finish()方法调用之间的时间差。但结果显示完全错误。很高兴听到这一点。如果您认为我回答了您的问题,请记住将其标记为答案。@Andrew您可以编辑您的问题,使其与已接受的答案一致吗。否则,很难看到这篇文章如何回答这个问题。再加上OP使用的是TimeSpan.Seconds
而不是TimeSpan.TotalSeconds
这一事实,解释了结果。yew!所以这是我的错!谢谢!是的。只要OP不想让某件事的时间超过一分钟。正如maniak所说,真正意义上的System.Diagnostics.Stopwatch是一个不错的选择。在这里重新发明轮子。