Я знаю, что обычный способ сравнительного анализа — это создать экземпляр секундомера и использовать его для измерения прошедшего времени, однако мне интересно, подойдет ли секундомер в этом случае, поскольку например, это будет зависеть от планирования. Мой подход гарантирует измерение только времени, которое процесс тратит на выполнение.
Мои два вопроса:
Я Я ошибаюсь, полагая, что секундомер в этом случае будет менее точным или худшим выбором?
Насколько точен Process.TotalProcessorTime? Я вижу, что он вызывает метод ядра32 «GetProcessTimes», но мне трудно найти информацию о том, как на самом деле работает этот метод. Между тем, имеется много информации о методе QueryPerformanceCounter, который использует секундомер.
Я пытаюсь измерить время выполнения процессов в C#. Вот код, который я использую для этого: [code]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; } [/code] Я знаю, что обычный способ сравнительного анализа — это создать экземпляр секундомера и использовать его для измерения прошедшего времени, однако мне интересно, подойдет ли секундомер в этом случае, поскольку например, это будет зависеть от планирования. Мой подход гарантирует измерение только времени, которое процесс тратит на выполнение. Мои два вопроса: [list] [*]Я Я ошибаюсь, полагая, что секундомер в этом случае будет менее точным или худшим выбором? [*]Насколько точен Process.TotalProcessorTime? Я вижу, что он вызывает метод ядра32 «GetProcessTimes», но мне трудно найти информацию о том, как на самом деле работает этот метод. Между тем, имеется много информации о методе QueryPerformanceCounter, который использует секундомер. [/list]