我正在尝试检查函数在我的代码中执行需要多长时间:
我这样做了:
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层架构。
由于
答案 0 :(得分:22)
DateTime.Millisecond返回当前日期/时间的毫秒部分,而不是之前某个日期/时间以来的毫秒数。
使用Stopwatch:
var stopwatch = Stopwatch.StartNew();
// ...
Console.WriteLine(stopwatch.ElapsedMilliseconds);
答案 1 :(得分:2)
您似乎正在使用和减去当前毫秒
e.g。
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属性返回日期的毫秒组件,即0
和999
之间的数字。
正如其他人所说,您可以使用StopWatch类,或者您可以调用DateTime.Subtract()方法获取TimeSpan实例,然后使用TotalMilliseconds属性该实例获取两次之间经过的总毫秒数:
public void Foo()
{
DateTime then = DateTime.Now;
// ...
Console.WriteLine(DateTime.Now.Subtract(then).TotalMilliseconds);
}
答案 4 :(得分:0)
您可能想要使用Stopwatch。