Это недостаточно профессионально:
Stopwatch sw = Stopwatch.StartNew();
PerformWork();
sw.Stop();
Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds);
Более надежная версия:
PerformWork();
int repeat = 1000;
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < repeat; i++)
{
PerformWork();
}
sw.Stop();
Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds / repeat);
В своем реальном коде я добавлю вызов GC.Collect для изменения управляемой кучи в известное состояние и добавлю вызов режима ожидания, чтобы различные интервалы кода можно было легко разделить в профиле ETW.