Ogólna funkcja do testowania wydajności dowolnego delegata
Podczas testowania względnej wydajności różnych implementacji metod, odnajduję ponownie funkcję podobną do tej.
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;
}
Czy zamiast przepisywać tę funkcję dla każdej pojedynczej metody, którą testuję, czy byłoby możliwe napisanie ogólnej implementacji do testowania wydajności dowolnego delagatu? Coś na wzór
private static long Measure(
int iterations,
Delegate func,
params object[] parameters)
{
...
}
lub
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");
}
...
}
Gdybym mógł to zrobić, miałoby to sensCompile
naExpression<TDelegate>
przed wykonaniem iteracji?