Sprawdzimy wywołanie zmiennych losowych 1000 razy i zapisanie tych zmiennych do tablicy:
$count =1000 $num1= @() $num2= @()
Poniżej kod do sprawdzenia obiektu z klasy random:
$objRandom = new-object random $measure1 = Measure-Command -Expression { for ($i =0; $i -lt $count; $i++) { $num1 += $objRandom.NextDouble() } }
I w przypadku polecenia Get-Random (alias random):
$measure2 = Measure-Command -Expression { for ($i =0; $i -lt $count; $i++) { $num2 += (random)/[Int32]::MaxValue } }
Wynik czasu działania jednego z kilku wywołań:
$measure1: TotalSeconds : 0,3785933 TotalMilliseconds : 378,5933 $measure2: TotalSeconds : 56,7377659 TotalMilliseconds : 56737,7659Wynik mnie nie zaskoczył. Spowolnienie może mieć kilka powodów:
- korzystanie z aliasu
- polecenia PS są wolniejsze niż wywołania obiektów .NET
- przy każdym wywołanieu polecenia radnom, tworzy się obiekt, a w pierwszym przypadku obiekt już jest zainicjalizowany
- dodatkowa operacja dzielenie liczby losowej przez maksymalną liczbę int
Brak komentarzy:
Prześlij komentarz