2011-12-19 6 views
3

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

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

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

Строительство выполнено успешно. 0 Предупреждение (ы) 0 Error (s)

Время, прошедшее с начала 00: 00: 00,28

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

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

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

+0

Может быть, вы можете использовать Measure CMDlet в PowerShell: http://technet.microsoft.com/en-us/library/ee176899.aspx – AVee

ответ

5

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

MsBuild сам будет обеспечивать измерение с течением времени. У моего скрипта много команд msbuild, и я хочу знать коллективную меру. Ваш ответ предназначен для одной команды msbuild – Samselvaprabu

+0

Можно измерить время выполнения самого скрипта. Покажите мне, как вы вызываете свой скрипт. – Abbas

+0

Powershell -file build.ps1 – Samselvaprabu

6

Обратите внимание, что если вы используете 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

Это то, что я хотел бы сделать, хотя я бы пробовал просто форматировать строку datetime, например «{0} минут {1} секунд» -f, $ time.minutes, $ time.seconds, чтобы избежать каких-либо сложных операторов if. – HungryHippos

Смежные вопросы