Я хочу измерить выполнение фрагмента кода, и мне интересно, какой способ лучше всего сделать это?
Вариант 1:
DateTime StartTime = DateTime.Now;
//Code
TimeSpan ts = DateTime.Now.Subtract(StartTime);
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine(elapsedTime, "RunTime");
Вариант 2: using System.Diagnostics;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
//Code
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine(elapsedTime, "RunTime");
Это не просто для тестирования, это фактически часть приложения. Время, необходимое для выполнения функции, является релевантными данными. Однако он не обязательно должен быть атомарным или сверхточным.
Какой вариант лучше для производственного кода, или кто-то другой использует что-то другое и, возможно, лучше?