Microsoft technet suggests [Math]::Floor([int]$a/[int]$b)
for integer division. 나는보다 적은 캐스팅 작업으로 인해 [int][Math]::Floor($a/$b)
이 더 읽기 쉽고 성능이 뛰어나다 고 생각합니다. I have proven both methods equivalent. 그러나 일관된 결과를 얻을 수 없습니다. 내 방법론은 두 방법론을 모두 10,000 번 반복하고 Measure-Command cmdlet을 사용하여 결과를 측정하는 것입니다. 그러나 한 테스트가 다른 테스트보다 반복적으로 수행되는 테스트를 수행 할 수는 없습니다. 내 코드는 다음과 같습니다.성능 테스트 PowerShell 정수 나누기의 두 가지 방법
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)"
한 가지 방법이 다른 것보다 낫다는 일관된 결과를 얻으려면 어떻게 코드를 수정해야합니까?
있습니다 나는'[INT] [수학] :: 층 ($ _/$ 제수)> $ null' 누락 생각 두 번째 루프에서. –
이들은 시스템의 백그라운드 프로세스가 차이를 무시할만큼 성능면에서 매우 비슷합니다.서비스를 중지하고 창을 닫으면 백그라운드 노이즈를 최소화 할 수 있습니다. Windows 안전 모드로 부팅 할 수도 있습니다. (msconfig.exe 참조). 작동의 결과를 캐스팅하면 왜 작동 자체가 더 빨라지는지 나는 모르겠다. –
@AndyArismendiquite가 올바르게 수정되었습니다. 직접 편집하고 편집 주석을 남길 수 있습니다. –