.net 睡眠或秒表测量不准确
我需要检查运行几个脚本需要多长时间,并希望确保我知道如何使用计时器,因此我编写了下面的简短测试来检查我的逻辑:.net 睡眠或秒表测量不准确,.net,powershell,timer,stopwatch,.net,Powershell,Timer,Stopwatch,我需要检查运行几个脚本需要多长时间,并希望确保我知道如何使用计时器,因此我编写了下面的简短测试来检查我的逻辑: for($i = 0; $i -lt 11; $i++) { $sw = [Diagnostics.Stopwatch]::StartNew() Start-Sleep -Milliseconds 2000 $sw.Stop() $elapsed = $sw.Elapsed.Milliseconds Write-Host $elapsed }
for($i = 0; $i -lt 11; $i++) {
$sw = [Diagnostics.Stopwatch]::StartNew()
Start-Sleep -Milliseconds 2000
$sw.Stop()
$elapsed = $sw.Elapsed.Milliseconds
Write-Host $elapsed
}
在这里,我只是启动一个计时器,调用Start Sleep
2000毫秒,然后输出(我认为是)经过的时间(以毫秒为单位)
这是输出:
1
6
11
11
12
9
11
12
12
11
8
我并不是100%确定从输出中可以得到什么,但我的假设是每行的长度刚好超过2000,因为这是睡眠的长度
有人知道这里发生了什么吗?我还用其他面值(分钟、小时、秒)测试了这一点,结果同样令人困惑
每次我运行这个脚本,结果都不一样,我似乎看不出任何模式 秒表没什么问题。返回时间跨度的毫秒分量。您应该使用该属性检索经过的毫秒数 但最准确的数值是。秒表本身并不计时,它在启动和停止时读取系统高分辨率计时器的滴答声值。Ticks属性包含这种差异
您可以从秒表本身检索相同的值,例如,我找到了答案
$sw.appeased.millizes
将仅显示已过的毫秒数(不包括分钟和秒数)
我需要使用的是$sw.elapsedmilliseconds