Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建一个方法以返回另一个方法的执行时间_C#_.net_Performance - Fatal编程技术网

C# 创建一个方法以返回另一个方法的执行时间

C# 创建一个方法以返回另一个方法的执行时间,c#,.net,performance,C#,.net,Performance,我正试图想出一个方法来测量并返回另一个方法的执行时间。基本上是这样的: public void DoSomething(Int32 aNumber) { /* Stuff happens */ } // // Somewhere else in code: TimeSpan executionTime = MyDiag.MeasureExecTime(DoSomething(5)); // Now executionTime contains how long DoSomething(5)

我正试图想出一个方法来测量并返回另一个方法的执行时间。基本上是这样的:

public void DoSomething(Int32 aNumber)
{ /* Stuff happens */ }

//
// Somewhere else in code:
TimeSpan executionTime = MyDiag.MeasureExecTime(DoSomething(5));

// Now executionTime contains how long DoSomething(5) took to execute,
// e.g. 2.55463 seconds.

我如何才能做到这一点(MeasureExecTime方法)?

我刚刚创建了这样一种方法来测试以下方面的性能:


如果不想测试多个迭代,请参阅280Z28的答案:-)

这也是我的问题。实际上,我是从你在另一个问题中的答案(包括性能测试)中得到这个想法的。lol.您的for循环增加了开销,可能会扭曲结果(虽然不是很明显…)。您应该在action()之前启动秒表,并将其暂停after@Thomas,它有一些缺陷,但在秒表开始之前采取行动并非其中之一。看我的答案。重复的?这是怎么重复杰夫关于通过lambda测量的问题的?而且,我已经接受了这个问题的答案,你手上的时间太多了?事实上,这个被接受的答案和另一个问题的被接受的答案几乎相同,这让我怀疑它是否是重复的,仅此而已。没必要对这件事大惊小怪。我可以问一下为什么吗?如果你想做一些快速的基准测试,很好;如果要分析应用程序,请使用分析程序。有一个免费的裸体版,有几个功能齐全的商业产品(ANTS、dotTrace)。
private static TimeSpan MeasureExecTime(Action action, int iterations)
{
    action(); // warm up
    var sw = Stopwatch.StartNew();
    for (int i = 0; i < iterations; i++)
    {
        action();
    }
    return sw.Elapsed;
}
MeasureExecTime(() => DoSomething(5), 100000);
public static TimeSpan MeasureExecTime(Action action)
{
    Stopwatch stopwatch = Stopwatch.StartNew();
    action();
    return stopwatch.Elapsed;
}