如何测量 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 }

示例脚本显然没有那么有趣,但正如您所见,它为您提供了每一行:

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

这对于确定您可能想要优化的确切 lines/statements 很有用:-)


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

如果您想要更精细的深度分析遥测,请查看 Profiler by nohwnd