Я хочу измерить выполнение фрагмента кода, и мне интересно, какой лучший способ сделать это?
Вариант 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: используя 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");
Это не просто для бенчмаркинга, его фактическая часть приложения. Время, которое функция выполняет для выполнения, - это релевантные данные. Однако он не должен быть атомарным или гиперточным.
Какой вариант лучше для производственного кода, или кто-то другой использует что-то другое и, возможно, лучше?