C# 中具有不同签名的函数的时间测量
Time measurement of functions with different signature in C#
我想测量我的应用程序中某些函数调用所花费的时间。为此,我使用 Stopwatch
class 并且效果很好。它看起来像这样:
static readonly Stopwatch StopWatch = new Stopwatch();
StopWatch.Restart();
void func();
StopWatch.Stop();
Assert.Blabla
但是我是围绕着很多函数输入的。有没有办法制作一个为我做这个的功能?我试过了,但由于函数的签名都不同,我无法弄清楚。我看了一下 Func
和 Action
,但它们似乎需要固定签名。我想要这样的东西:
CallAndMeasureFunction(func)
您可以使用如下内容:
定义一个将您的实际方法委托作为输入的方法:
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()});
使用这段代码,您可以测量每个方法的执行时间
我想测量我的应用程序中某些函数调用所花费的时间。为此,我使用 Stopwatch
class 并且效果很好。它看起来像这样:
static readonly Stopwatch StopWatch = new Stopwatch();
StopWatch.Restart();
void func();
StopWatch.Stop();
Assert.Blabla
但是我是围绕着很多函数输入的。有没有办法制作一个为我做这个的功能?我试过了,但由于函数的签名都不同,我无法弄清楚。我看了一下 Func
和 Action
,但它们似乎需要固定签名。我想要这样的东西:
CallAndMeasureFunction(func)
您可以使用如下内容:
定义一个将您的实际方法委托作为输入的方法:
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()});
使用这段代码,您可以测量每个方法的执行时间