使用PowerShell Timespans进行算术运算

时间:2010-08-20 23:55:45

标签: powershell timespan

PowerShell Timespans非常适合快速显示持续时间,如:

$starttime = $(get-date)
{ do some processing here }
write-host "Duration: $((new-timespan $starttime $(get-date)).tostring())"

但如果我在该时间段内进行$loopcount次迭代处理,我如何将持续时间除以$loopcount以获得每次迭代的平均持续时间?

3 个答案:

答案 0 :(得分:9)

如果这样做(如果你不需要脚本块的输出),可能是一个更好的方法:

1..$loopcount | ForEach-Object {
    Measure-Command {
        # do some processing here
    }
} | Measure-Object -Average TotalSeconds

答案 1 :(得分:2)

在这里,您可以根据需要进行调整。

$StartTime = Get-Date
{ <#do some processing here#> }

$TimeSpan = New-TimeSpan $StartTime (Get-Date)
$AverageTimeSpan = New-TimeSpan -Seconds ($TimeSpan.TotalSeconds / $LoopCount)

秒数是最好的单位。

答案 2 :(得分:0)

好的,我尝试将其添加为评论,但代码的格式仅限于评论中,因此我将其作为另一个答案。

我有类似的需求,但我正在循环一个集合,需要对集合中的每个元素测量2个不同的操作,并想总结每个操作所花费的总时间。

这是我做的:

$opATot = New-TimeSpan
$opBTot = New-TimeSpan
$myData | %{
   $opA = Measure-Command -Expression { do-op-a $_ }
   $opB = Measure-Command -Expression { do-op-b $_ }
   $opATot = $opATot.add( $opA )
   $opBTot = $opBTot.add( $opB )
}
"Op A took " + $opATot
"Op B took " + $opBTot