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. Однако не может быть проведено испытание, когда один тест будет работать лучше, чем другой тест. Мой код ниже:Тестирование производительности двух методов разделения целых чисел 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] [Math] :: этаж ($ _/$ делителя)> $ null' из второго цикла. –
Они кажутся настолько близкими по производительности, что фоновые процессы вашей системы делают разницу несущественной.вы можете минимизировать фоновый шум, останавливая службы, закрывая окна и т. д., вы даже можете загрузиться в безопасном режиме Windows. (см. msconfig.exe). Должен сказать, я не понимаю, почему кастинг результата операции заставит операцию работать быстрее. –
@ AndyArismendiquite правильно и исправлено. Вы могли бы отредактировать его самостоятельно и оставили комментарий для редактирования. –