Как измерить время выполнения сборки? - PullRequest
4 голосов
/ 19 декабря 2011

У меня есть скрипт сборки в msbuild, который будет вызываться powershell.

Файл журнала сборки будет выглядеть следующим образом.

Сборка началась 19.12.2011 14:01:54.

Сборка выполнена успешно. 0 Предупреждение (я) 0 Ошибка (и)

прошедшее время 00: 00: 00.28

В начальной точке будет указано время начала выполнения сборки, а в конце будет указано время истекло.

Я бы хотел найти время выполнения с помощью powershell или msbuild. Как я могу добавить значение за все время или найти разницу между вхождением последней сборки и первым вхождением сборки?

Как и в файле журнала, я не знаю, как извлечь это и измерить.

Ответы [ 2 ]

6 голосов
/ 20 декабря 2011

Обратите внимание, что если вы используете 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;
5 голосов
/ 19 декабря 2011

Используйте 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
...