如何测量 powershell 脚本中不同功能的持续时间(以秒为单位)?
Posted
技术标签:
【中文标题】如何测量 powershell 脚本中不同功能的持续时间(以秒为单位)?【英文标题】:How do I measure duration (in seconds) for different functions in a powershell script? 【发布时间】:2021-10-03 20:59:51 【问题描述】:我有一个运行大约 60 秒的 powershell 脚本。作为优化的一部分,我想知道脚本的哪一部分花费了更多时间。该脚本具有多个功能,例如对 ADO 中的 TFS 进行 restcall、验证内容、发布等。
即使没有优化空间,我也想为脚本中的每个任务提供持续时间的证据。我进行了研究并找到了使用 Measure cmd、秒表的选项,但我不确定如何在函数中使用它。感谢您的任何意见。
【问题讨论】:
这里有Measure-Command。 在Mathias R. Jessen 的this answer 底部查看一个名为PSProfiler 的不错的模块,其中包含一个名为Measure-Script
的函数,我认为它会对您有所帮助。
【参考方案1】:
作为Daniel kindly points out,我维护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
- 从该特定行开始执行语句的次数
测量的总执行时间。
这对于磨练您可能想要优化的确切行/语句很有用:-)
值得注意的是,PSProfiler 通过检测源代码来工作,因此只测量在脚本中编写的语句之间所用的时间。
如果您想要更精细的深入分析遥测,请查看Profiler by nohwnd
【讨论】:
感谢您的回答。我能够运行脚本并测量持续时间。我只是进行了如下更改以强制安装。非常感谢。安装模块 PSProfiler -Force以上是关于如何测量 powershell 脚本中不同功能的持续时间(以秒为单位)?的主要内容,如果未能解决你的问题,请参考以下文章
powershell 测量PowerShell命令或PowerShell脚本的速度
PowerShell - 多个 Get-Date 调用返回不同的时间格式/文化