让以下函数Measure
测量某些函数的执行时间method
public static TimeSpan Measure(Action method)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
method.Invoke();
stopwatch.Stop();
return stopwatch.Elapsed;
}
此方法由以下代码行启动
var ExecTime = ComplexityCounters.Measure(() => method(int a, int b));
正如我们所看到的,这是一个非常大的回忆Measure
,所以,让我们尝试通过以下函数来缩短它
public static TimeSpan ExecTime (Action method)
{
var ExecutionTime = Measure(() => method.Invoke());
return ExecutionTime;
}
但
var ExecTime = ExecTime(method(int a, int b));
给出错误 c# cannot convert from 'void' to 'System.Action'。如何解决?或者有没有办法将这两个功能合二为一?
这里完整的例子
public static TimeSpan Measure(Action method)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
method.Invoke();
stopwatch.Stop();
return stopwatch.Elapsed;
}
public static TimeSpan ExecTime(Action method)
{
var ExecutionTime = Measure(() => method.Invoke());
return ExecutionTime;
}
private static void Main(string[] args)
{
var spentTime = ExecTime(() => Sum(1,2));
}
public static int Sum(int t1, int t2)
{
return t1 + t2;
}
实际上,您正在声明您的变量ExecTime
与您的方法名称相同ExecTime
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句