2011-12-19 80 views
3

我在msbuild中構建腳本,它將由powershell調用。如何測量構建執行時間?

生成日誌文件看起來像這樣。

開始建造12/19/2011 2:01:54 PM。

構建成功。 0警告(S) 0錯誤(S)

已用時間00:00:00.28

在起點,它會指定構建執行開始時間和結束它會說時間已過。

我想找到執行時間使用powershell或msbuild。我怎樣才能添加所有的時間流逝的價值,或找到最後建造開始發生與第一次建造發生之間的差異?

因爲它是在日誌文件中,我不知道如何檢索這個和度量。

+0

也許你可以使用測量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

請注意,如果你使用測量命令{},它會消耗你構建的控制檯輸出。所以任何輸出都會消失。

這樣做的一種較少干擾的方法是簡單地減去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

這就是我想要做的,儘管我可能只是將日期時間字符串格式化爲「{0}分鐘{1}秒」-f,$ time.minutes,$ time.seconds以避免任何複雜的if語句。 – HungryHippos