测量功能所花费的时间并且不理解为什么时差是负的

时间:2011-01-07 13:26:36

标签: c# .net asp.net datetime time

我正在尝试检查函数在我的代码中执行需要多长时间:

我这样做了:

void foo()
{

int time = System.DateTime.Now.Millisecond;

// code of my function. do this, that, etc.

Console.WriteLine((System.DateTime.Now.Millisecond-time).ToString());

}

我得到的是:

-247

我不明白为什么减去? &安培;请告诉我测量功能所用时间的方法。 &安培;如果pro-filer是一个选项,那么请向我推荐一些简单的选项。

注意:这里我展示了一个控制台应用程序,但实际上我需要一个ASP.NET中的Web应用程序,它也可能是n层架构。

由于

5 个答案:

答案 0 :(得分:22)

DateTime.Millisecond返回当前日期/时间的毫秒部分,而不是之前某个日期/时间以来的毫秒数。

使用Stopwatch

var stopwatch = Stopwatch.StartNew();

// ...

Console.WriteLine(stopwatch.ElapsedMilliseconds);

答案 1 :(得分:2)

您似乎正在使用和减去当前毫秒

e.g。

  • 2010-01-01 00:00:00:999 - > System.DateTime.Now.Millisecond是999
  • 2010-01-01 00:00:01:000 - > System.DateTime.Now.Millisecond是000

000 - 999 = -999;非常有用!

无论如何,建议不要使用DateTime.Now进行配置。如果您只想尝试一个想法,可能需要查看System.Diagnostics.Stopwatch: -

void Foo()
{
  Stopwatch myStopWatch = StopWatch.StartNew()

  // Your code goes here;

  Console.WriteLine(myStopWatch.ElapsedMilliseconds);
}

对于“真实世界”的使用,you're best using a profiler.

答案 2 :(得分:1)

DateTime.Millisecond返回当前时间的毫秒分量 换句话说,它返回mod 1,000的总毫秒数 例如,如果您恰好在一秒钟的时间内获得该属性,则它将为0。

相反,您应该使用Stopwatch类。

答案 3 :(得分:1)

Millisecond属性返回日期的毫秒组件,即0999之间的数字。

正如其他人所说,您可以使用StopWatch类,或者您可以调用DateTime.Subtract()方法获取TimeSpan实例,然后使用TotalMilliseconds属性该实例获取两次之间经过的总毫秒数:

public void Foo()
{
    DateTime then = DateTime.Now;
    // ...
    Console.WriteLine(DateTime.Now.Subtract(then).TotalMilliseconds);
}

答案 4 :(得分:0)

您可能想要使用Stopwatch