OK.Название этого вопроса нелегко расшифровать, но позвольте мне объяснить вам.
Для того, чтобы установить общий язык, я собираюсь предоставить некоторую подробную информацию, но этот вопрос предназначен для применения ко всем возможнымконтексты, языки и платформы.
Платформа: .NET Framework 4.0 Система: Windows (очевидно) Язык: F #
Мне нужно запустить программу и оценить время, затраченное на выполнение некоторых инструкций.Предположим, у вас есть основная функция, там вы разместите счетчик времени:
open System.Diagnostics
let main args =
let watch = new Stopwatch ()
watch.Start ()
(* Calling functions and executing main body... *)
watch.Stop ()
(* Printing out the evaluated time *)
ОК!У меня есть время, и я счастлив.
Теперь я хочу измерить это время, но оцениваю его со стороны.Итак, рассмотрим сценарий PowerShell, который запускает файл, но также считает время:
$MyProcess = New-Object "System.Diagnostics.Process";
$Watch = New-Object "System.Diagnostics.Stopwatch";
$MyProcess.StartInfo.FileName = "Myexec";
$MyProcess.StartInfo.Arguments = "args";
$MyProcess.StartInfo.CreateNoWindow = $true;
$MyProcess.StartInfo.UseShellExecute = $false;
$StartingTimer = $Watch.Start(); # Starts the timer
$StartingProcess = $MyProcess.Start();
$WaitingForExit = $MyProcess.WaitForExit();
$StoppingTimer = $Watch.Stop(); # Stops the timer
# Collectiong timings
$Ticks = $Watch.ElapsedTicks;
# Returning and printing
Write-Output "$Ticks";
Хорошо.У меня такой вопрос: как вы видите, у нас есть два разных типа оценки: в коде и вне кода.Я думаю, что те времена разные !!!Поскольку таймер внешнего кода оценивает некоторые инструкции, которые не конкурируют с программой, которую я должен оценить.Например, переключение контекста и т. Д. В таймере внешнего кода, если процессор испытывает переключение контекста, я буду оценивать время, которое требуется другому процессу для завершения во время его сегмента контекста ...
Это так?Я прав?