Как измерить время выполнения сборки?

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

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

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

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

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

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

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

Поскольку это находится в файле журнала, я не знаю, как получить это и измерить.


person Samselvaprabu    schedule 19.12.2011    source источник
comment
Возможно, вы можете использовать Measure CmdLet в powershell: technet.microsoft.com/en- нас/библиотека/ee176899.aspx   -  person AVee    schedule 19.12.2011


Ответы (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
person Abbas    schedule 19.12.2011
comment
Сам Msbuild обеспечит измерение по истечении времени. В моем сценарии много команд msbuild, и я хочу знать коллективные меры. Ваш ответ предназначался для одной команды msbuild - person Samselvaprabu; 19.12.2011
comment
Время выполнения самого скрипта можно измерить. Покажи мне, как ты вызываешь свой скрипт. - person Abbas; 19.12.2011
comment
Вы можете запустить PowerShell из PowerShell, просто заключив команду в фигурные скобки. Я обновляю свой ответ, чтобы показать вам, что я запускал, и что получилось. - person Abbas; 19.12.2011
comment
О чем я думал... нет необходимости запускать PowerShell из PowerShell. Вы можете просто запустить скрипт сборки в Measure-Command: Measure-Command { ./build.ps1 }. Я также обновил свой ответ. - person Abbas; 20.12.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;
person supermem613    schedule 19.12.2011
comment
Это то, что я бы сделал, хотя, вероятно, я бы просто отформатировал строку даты и времени, например {0} минут {1} секунд -f, $time.minutes, $time.seconds, чтобы избежать каких-либо сложных операторов if. - person HungryHippos; 09.04.2012