Allgemeine Funktion zum Testen der Leistung eines Delegierten
Beim Testen der relativen Leistung verschiedener Methodenimplementierungen stelle ich fest, dass ich ähnliche Funktionen neu schreibe.
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;
}
Wäre es möglich, eine generische Implementierung für Leistungstests zu schreiben, anstatt diese Funktion für jede von mir getestete Methodensingnatur neu zu schreiben? Etwas in der Art von
private static long Measure(
int iterations,
Delegate func,
params object[] parameters)
{
...
}
oder
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");
}
...
}
Wenn ich das kann wäre es sinnvollCompile
einExpression<TDelegate>
vor dem Ausführen der Iterationen?