如何测量 powershell 脚本中不同函数的持续时间(以秒为单位)?
How do I measure duration (in seconds) for different functions in a powershell script?
我有一个运行大约 60 秒的 powershell 脚本。作为优化的一部分,我想知道脚本的哪一部分花费了更多时间。该脚本有几个功能,例如在 ADO 中对 TFS 进行重新调用、验证内容、发布等..
即使没有优化的余地,我也想为脚本中的每个任务提供持续时间的证据。我做了研究并找到了使用 Measure cmd、秒表的选项,但我不确定如何在函数中使用它。感谢您的任何意见。
作为 , I maintain a module called PSProfiler 设计用于从任意脚本或脚本块收集逐行执行时间测量值:
# Install PSProfiler
Install-Module PSProfiler -Scope CurrentUser
# Import PSProfiler
Import-Module PSProfiler
# Profile sample script
Measure-Script -Name "Arunkumar's script " {
Start-Sleep 1
Start-Sleep 2
}
你会得到这样的输出:
Anonymous ScriptBlock:
Arunkumar's script
Count Line Time Taken Statement
----- ---- ---------- ---------
0 1 00:00.0000000 {
1 2 00:01.0116913 Start-Sleep 1
1 3 00:02.0037062 Start-Sleep 2
0 4 00:00.0000000 }
示例脚本显然没有那么有趣,但正如您所见,它为您提供了每一行:
- A
Count
- 从该特定行开始执行语句的次数
- 测量的总执行时间。
这对于确定您可能想要优化的确切 lines/statements 很有用:-)
值得注意的是,PSProfiler 通过检测源代码来工作,因此仅测量脚本中编写的语句之间所花费的时间。
我有一个运行大约 60 秒的 powershell 脚本。作为优化的一部分,我想知道脚本的哪一部分花费了更多时间。该脚本有几个功能,例如在 ADO 中对 TFS 进行重新调用、验证内容、发布等..
即使没有优化的余地,我也想为脚本中的每个任务提供持续时间的证据。我做了研究并找到了使用 Measure cmd、秒表的选项,但我不确定如何在函数中使用它。感谢您的任何意见。
作为
# Install PSProfiler
Install-Module PSProfiler -Scope CurrentUser
# Import PSProfiler
Import-Module PSProfiler
# Profile sample script
Measure-Script -Name "Arunkumar's script " {
Start-Sleep 1
Start-Sleep 2
}
你会得到这样的输出:
Anonymous ScriptBlock:
Arunkumar's script
Count Line Time Taken Statement
----- ---- ---------- ---------
0 1 00:00.0000000 {
1 2 00:01.0116913 Start-Sleep 1
1 3 00:02.0037062 Start-Sleep 2
0 4 00:00.0000000 }
示例脚本显然没有那么有趣,但正如您所见,它为您提供了每一行:
- A
Count
- 从该特定行开始执行语句的次数 - 测量的总执行时间。
这对于确定您可能想要优化的确切 lines/statements 很有用:-)
值得注意的是,PSProfiler 通过检测源代码来工作,因此仅测量脚本中编写的语句之间所花费的时间。