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

但是我是围绕着很多函数输入的。有没有办法制作一个为我做这个的功能?我试过了,但由于函数的签名都不同,我无法弄清楚。我看了一下 FuncAction,但它们似乎需要固定签名。我想要这样的东西:

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()});

使用这段代码,您可以测量每个方法的执行时间