さまざまなメソッド実装の相対的なパフォーマンスをテストすると、これに似た関数を書き直していることに気付きます。
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;
}
私がテストするすべてのメソッドの性質に対してこの関数を書き直すのではなく、パフォーマンステストのための一般的な実装を書くことは可能でしょうか?の線に沿った何か
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>