如何测量powershell脚本中不同函数的持续时间(以秒为单位)?



我有一个运行大约60秒的powershell脚本。作为优化的一部分,我想知道脚本的哪一部分需要更多的时间。该脚本有几个功能,如在ADO中重新调用TFS,验证内容,发布等。

即使没有优化的余地,我也想为脚本中的每个任务提供持续时间的证据。我做了研究,找到了使用测量cmd,秒表的选项,但我不确定如何在功能中使用它。谢谢你的建议。

正如Daniel好心指出的那样,我维护了一个名为PSProfiler的模块,旨在从任意脚本或scriptblock中收集逐行执行时间测量:

# 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 }

示例脚本显然不是那么有趣,但正如您所看到的,它为您提供了每一行:

  1. ACount-从特定行开始的语句执行的次数
  2. 测量的总执行时间。

这对于确定您可能想要优化的确切行/语句非常有用:-)


值得注意的是,PSProfiler通过检测源代码来工作,因此只测量语句在脚本中编写时所花费的时间。

如果你想要更细粒度的深度剖析遥测,请查看Profiler by nohwnd

相关内容

  • 没有找到相关文章

最新更新