【问题标题】:How to measure the build execution time?如何测量构建执行时间?
【发布时间】:2011-12-19 08:57:40
【问题描述】:

我在 msbuild 中有构建脚本,将由 powershell 调用。

构建日志文件如下所示。

构建于 2011 年 12 月 19 日下午 2:01:54 开始。

构建成功。 0 个警告 0 个错误

经过时间 00:00:00.28

在开始时它会指定构建执行的启动时间和结束它会说 Time elapsed。

我想使用 powershell 或 msbuild 查找执行时间。如何添加所有经过的时间值或找到上次构建开始发生与首次构建发生之间的差异?

因为它在日志文件中,我不知道如何检索和测量。

【问题讨论】:

标签: powershell msbuild powershell-2.0 msbuild-4.0


【解决方案1】:

请注意,如果您使用 Measure-Command { },它将使用您构建的控制台输出。所以任何输出都会消失。

执行此操作的侵入性较小的方法是简单地减去 Get-Date 值。例如,这将是您的 build.ps1 脚本:

$before = Get-Date
<your build command line>
$after = Get-Date

$time = $after - $before
$buildTime = "`nBuild finished in ";
if ($time.Minutes -gt 0)
{
    $buildTime += "{0} minute(s) " -f $time.Minutes;
}

$buildTime += "{0} second(s)" -f $time.Seconds;

【讨论】:

  • 这就是我要做的,虽然我可能只是格式化日期时间字符串,如 "{0} minutes {1} seconds" -f, $time.minutes, $time.seconds 以避免任何复杂的 if 语句。
【解决方案2】:

使用Measure-Commmand 查看您的构建过程需要多长时间。这是一个例子:

Measure-Command { ./build.ps1 }

我机器上的输出是:

PS D:\> Measure-Command { ./build.ps1 }


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 6
Milliseconds      : 443
Ticks             : 64439301
TotalDays         : 7.45825243055556E-05
TotalHours        : 0.00178998058333333
TotalMinutes      : 0.107398835
TotalSeconds      : 6.4439301
TotalMilliseconds : 6443.9301

【讨论】:

  • Msbuild 本身将提供随时间流逝的测量值。我的脚本有很多 msbuild 命令,我想知道集体测量。您的答案适用于一个 msbuild 命令
  • 可以测量脚本本身的执行时间。告诉我你是如何调用你的脚本的。
  • 您可以在 PowerShell 中运行 PowerShell,只需将命令包含在大括号中即可。我正在更新我的答案,以向您展示我运行的内容及其输出。
  • 我在想什么...没有必要从 PowerShell 中运行 PowerShell。您可以在 Measure-Command 中运行构建脚本:Measure-Command { ./build.ps1 }。我也更新了我的答案。
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 2018-09-24
  • 2021-08-08
  • 2011-02-16
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
相关资源
最近更新 更多