我想测量某些函数调用在我的应用程序中占用的时间。为此,我使用Stopwatch
类,它工作正常。它看起来像这样:
static readonly Stopwatch StopWatch = new Stopwatch();
StopWatch.Restart();
void func();
StopWatch.Stop();
Assert.Blabla
但是我在很多功能中打字。有没有办法为我做一个功能呢?我试过,但由于功能的签名都不同,我无法弄清楚。我查看了Func
和Action
,但它们似乎需要一个固定的签名。我想要这样的东西:
CallAndMeasureFunction(func)
答案 0 :(得分:1)
您可以使用以下内容:
定义一个方法,将您的实际方法委托为输入:
public static TimeSpan GetTimestampFor(Action action)
{
TimeSpan timestamp = new TimeSpan(0);
Stopwatch stopWatch = new Stopwatch();
if (action != null)
{
stopWatch.Start();
action.Invoke();
stopWatch.Stop();
timestamp = stopWatch.Elapsed;
}
return timestamp;
}
并将其命名如下:
var timeSpan = GetTimestampFor(() => {var xyz = ActualMethodForWhichTimeHasTobeMeasured()});
使用此代码,您可以测量每个方法的执行时间