好的。這個qiestion的標題不容易解碼,但讓我解釋一下。瞭解運行內碼時間計數器和外碼時間計數器之間的區別
爲了建立一個共同點,我將提供一些詳細的信息,但這個問題是爲了適用於所有可能的語境,語言和平臺。
平臺:.NET框架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 *)
OK! 我得到時間,我很高興。
現在我想測量這個時間,但從外部評估它。 因此認爲太運行該文件,但達到時間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";
嘛。 我的問題是這樣的: 正如你所看到的,我們有兩種不同類型的評估:in-code和out-code。 我認爲那些時代是不同的!因爲out-code計時器會評估一些不參與我需要評估的程序的指令。例如上下文切換等...... 在外碼計時器中,如果CPU經歷上下文切換,我將評估其他進程在其上下文切片期間完成的時間...
是這樣嗎? 我對不對?