This is not professional enough:

 Stopwatch sw = Stopwatch.StartNew();
 PerformWork();
 sw.Stop();

 Console.WriteLine("Time taken: {0}ms", sw.Elapsed.TotalMilliseconds);

A more reliable version is:

 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);

In my real code, I will add GC.Collect call to change managed heap to a known state, and add Sleep call so that different intervals of code can be easily separated in ETW profile.