fjdumont
4/11/2018 - 9:01 AM

Microsoft.PowerShell_profile

Microsoft.PowerShell_profile

function Measure-Command2 ([scriptblock]$Expression, [int]$Samples = 1, [Switch]$Silent) {
  $timings = @()

  do {
    $sw = New-Object Diagnostics.Stopwatch
    if ($Silent) {
      $sw.Start()
      $null = & $Expression
      $sw.Stop()
      Write-Host "." -NoNewline
    }
    else {
      $sw.Start()
      & $Expression
      $sw.Stop()
    }
    $timings += $sw.Elapsed

    $Samples--
  } while ($Samples -gt 0)

  if ($Silent) {
    Write-Host
  }

  $stats = $timings | Measure-Object -Average -Minimum -Maximum -Property Ticks
  Write-Host "Avg:`t$(New-Object System.TimeSpan $stats.Average)"
  Write-Host "Min:`t$(New-Object System.TimeSpan $stats.Minimum)"
  Write-Host "Max:`t$(New-Object System.TimeSpan $stats.Maximum)"
}
Set-Alias time Measure-Command2