代码之家  ›  专栏  ›  技术社区  ›  Ken Paul

带PowerShell时间跨度的算法

  •  5
  • Ken Paul  · 技术社区  · 16 年前

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

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

    但如果我这么做了 $loopcount 在这个时间范围内处理的迭代,我如何将持续时间除以 $循环计数 得到每次迭代的平均持续时间?

    3 回复  |  直到 16 年前
        1
  •  10
  •   Joey Gumbo    16 年前

    1..$loopcount | ForEach-Object {
        Measure-Command {
            # do some processing here
        }
    } | Measure-Object -Average TotalSeconds
    
        2
  •  3
  •   JasonMArcher TWE    16 年前

    给你,你可以根据需要调整。

    $StartTime = Get-Date
    { <#do some processing here#> }
    
    $TimeSpan = New-TimeSpan $StartTime (Get-Date)
    $AverageTimeSpan = New-TimeSpan -Seconds ($TimeSpan.TotalSeconds / $LoopCount)
    

        3
  •  0
  •   Jim    8 年前

    好的,我试着添加这个作为一个注释,但是代码的格式仅限于注释中,所以我将把它作为另一个答案。

    以下是我所做的:

    $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