在 PowerShell 中使用 Measure-Command
測量程式或指令稿執行所花費的時間。
測量程式執行時間
在 PowerShell 中若要測量程式的執行時間,可以使用 Measure-Command
來測量,將要測量的程式或指令內容包在大括號中。例如若要測量 Get-EventLog
這個指令的執行時間,就可以這樣寫:
# 測量程式執行時間 Measure-Command { Get-EventLog "windows powershell" }
這個 Get-EventLog
指令的執行大約花了 0.2 秒的時間。
Measure-Command
也可以用來測量自己寫的 PowerShell 指令稿:
# 測量程式執行時間 Measure-Command { .my_script.ps1 }
同時觀看程式輸出
Measure-Command
在測量程式的執行時間時,預設不會顯示該程式本身的輸出訊息,如果想要同時查看程式的輸出,可以將該程式的輸出導向至 Out-Default
:
# 顯示程式輸出 Measure-Command { Get-EventLog "windows powershell" | Out-Default }
這樣就可以同時看到程式輸出以及測量的結果。
Stopwatch
測量時間
除了使用 Measure-Command
之外,亦可使用 .NET 的 Stopwatch
來測量時間,只要將要執行的工作放在 StartNew
與 Stop
之間,即可量測出程式的執行時間:
# 開始計時 $sw = [Diagnostics.Stopwatch]::StartNew() # 執行程式 .my_script.ps1 # 停止計時 $sw.Stop() # 輸出測量時間 $sw.Elapsed
這種測量方式適合用在 PowerShell 指令稿中,也就是所有的指令都是連續執行的狀況,這樣測出來的時間才會比較準確(不適合用手動輸入指令的方式)。