Microsoft technetは、整数除算を提案[Math]::Floor([int]$a / [int]$b)
しています。[int][Math]::Floor($a / $b)
キャスト操作が1つ少ないため、読みやすく、パフォーマンスも向上すると思います。私は両方の方法が同等であることを証明しました。しかし、一貫した結果を得ることができません。私の方法論では、両方の方法論を10,000回繰り返し、Measure-Commandコマンドレットを使用して結果を測定します。ただし、あるテストが別のテストよりも繰り返しパフォーマンスが優れているテストを構成することはできません。私のコードは以下の通りです:
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)"
ある方法が別の方法よりも優れていることを証明する一貫した結果が得られるように、コードを変更するにはどうすればよいですか。