当测试不同的方法实现的相对表现,我发现自己重新编写类似这样的功能。
private static long Measure(
int iterations,
Func<string, string> func,
string someParameter)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
for (var i = 0; i < iterations; i++)
{
func(someParameter);
}
stopwatch.Stop();
return stopwatch.ElapsedTicks;
}
而不是重写此功能singnature,我测试的每一个方法,这将是可以写入性能测试任何delagate一个通用的实现? 沿着线的东西
private static long Measure(
int iterations,
Delegate func,
params object[] parameters)
{
...
}
要么
private static long Measure<TDelegate>(
int iterations,
TDelegate func,
params object[] parameters)
{
if (!typeof(TDelegate).IsSubclassOf(typeof(Delegate)))
{
throw new ArgumentException("Not a delegate", "func");
}
...
}
如果我能做到这将是有意义的Compile
的Expression<TDelegate>
执行迭代过吗?