详细说明time命令的执行流程是什么?
我在PowerShell中有一个用户创建的函数,它将按以下方式计算执行命令的时间。
Unix中的“时间命令”也是以同样的方式计算的吗?
Measure-Command
cmdlet是你的朋友。
PS> Measure-Command -Expression {dir}
您还可以从命令历史记录(此示例中的上一次执行命令)获取执行时间:
$h = Get-History -Count 1
$h.EndExecutionTime - $h.StartExecutionTime
我一直这样做:
Time {npm --version ; node --version}
使用此功能,您可以将其放入$profile
文件中:
function Time([scriptblock]$scriptblock, $name)
{
<#
.SYNOPSIS
Run the given scriptblock, and say how long it took at the end.
.DESCRIPTION
.PARAMETER scriptBlock
A single computer name or an array of computer names. You mayalso provide IP addresses.
.PARAMETER name
Use this for long scriptBlocks to avoid quoting the entire script block in the final output line
.EXAMPLE
time { ls -recurse}
.EXAMPLE
time { ls -recurse} "All the things"
#>
if (!$stopWatch)
{
$script:stopWatch = new-object System.Diagnostics.StopWatch
}
$stopWatch.Reset()
$stopWatch.Start()
. $scriptblock
$stopWatch.Stop()
if ($name -eq $null) {
$name = "$scriptblock"
}
"Execution time: $($stopWatch.ElapsedMilliseconds) ms for $name"
}
Measure-Command
工作,但它吞下了正在运行的命令的标准输出。 (另见Timing a command's execution in PowerShell)
如果你需要测量某些东西的时间,你可以关注this blog entry。
基本上,它建议使用.NET StopWatch class:
$sw = [System.Diagnostics.StopWatch]::startNew()
# The code you measure
$sw.Stop()
Write-Host $sw.Elapsed