Microsoft technet建议[Math]::Floor([int]$a / [int]$b)
进行整数除法。我相信[int][Math]::Floor($a / $b)
由于少了一次强制转换操作,它的可读性和性能都更高。我已经证明这两种方法是等效的。但是,我无法获得一致的结果。我的方法包括将这两种方法重复 10,000 次并使用Measure-Command cmdlet 测量结果。但是,不能构建一个测试重复执行比另一个测试更好的测试。我的代码如下:
Write-Host
$loopLength = 10000
$runtime = Measure-Command {
1..$loopLength | ForEach-Object {
Foreach ($divisor in 2,3,5,7) {
[Math]::Floor([int]$_ / [int]$divisor) > $null
}
}
}
"Double Cast: $($runtime.TotalMilliSeconds)"
$runtime = Measure-Command {
1..$loopLength | ForEach-Object {
Foreach ($divisor in 2,3,5,7) {
[int][Math]::Floor($_ / $divisor) > $null
}
}
}
"Single Cast: $($runtime.TotalMilliSeconds)"
如何修改我的代码,以便获得一致的结果,证明一种方法比另一种更好。