Бенчмаркинг C#: насколько точен Process.TotalProcessorTimeC#

Место общения программистов C#
Ответить
Anonymous
 Бенчмаркинг C#: насколько точен Process.TotalProcessorTime

Сообщение Anonymous »

Я пытаюсь измерить время выполнения процессов в C#. Вот код, который я использую для этого:

Код: Выделить всё

private static double TimeProcess(string name, string workingDirectory, string arguments)
{
Process process = new Process();
process.StartInfo.WorkingDirectory = workingDirectory;
process.StartInfo.FileName = name;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.Arguments = arguments;

process.Start();
process.WaitForExit();

return process.TotalProcessorTime.TotalMilliseconds;
}
Я знаю, что обычный способ сравнительного анализа — это создать экземпляр секундомера и использовать его для измерения прошедшего времени, однако мне интересно, подойдет ли секундомер в этом случае, поскольку например, это будет зависеть от планирования. Мой подход гарантирует измерение только времени, которое процесс тратит на выполнение.
Мои два вопроса:
  • Я Я ошибаюсь, полагая, что секундомер в этом случае будет менее точным или худшим выбором?
  • Насколько точен Process.TotalProcessorTime? Я вижу, что он вызывает метод ядра32 «GetProcessTimes», но мне трудно найти информацию о том, как на самом деле работает этот метод. Между тем, имеется много информации о методе QueryPerformanceCounter, который использует секундомер.


Подробнее здесь: https://stackoverflow.com/questions/305 ... cessortime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»