Меня интересует влияние на производительность функций в PowerShell.Допустим, мы хотим сгенерировать 100.000 случайных чисел, используя System.Random.
$ranGen = New-Object System.Random
Выполнение
for ($i = 0; $i -lt 100000; $i++) {
$void = $ranGen.Next()
}
завершается в течение 0,19 секунды.Я помещаю вызов в функцию
Get-RandomNumber {
param( $ranGen )
$ranGen.Next()
}
Выполнение
for ($i = 0; $i -lt 100000; $i++) {
$void = Get-RandomNumber $ranGen
}
занимает около 4 секунд.
Почему такое огромное влияние на производительность?
Есть ли способ, которым я могу использовать функции и при этом получать производительность, которая у меня есть при прямом вызове?
Существуют ли лучшие (более производительные) способы инкапсуляции кода в PowerShell?