Welcome to Our Website

Quick Hits: Items toevoegen aan een Array en een blik op prestaties

Ik had een aantal opmerkingen over een recente prestatievergelijkingsartikel die goed werden ontvangen en moedigde me aan om een aantal van deze soortgelijke artikelen te schrijven. Dus zonder verder oponthoud, laten we beginnen op te kijken naar het toevoegen van items aan een array en welke aanpak zou beter zijn in termen van prestaties.

De meest voorkomende aanpak die ik zie bij het toevoegen van items aan een array in PowerShell is door het gebruik van de += operator.,

 $a = @()$a += 'data'$a$a += 'test'$a

Ik moest eerst de array initialiseren, anders zouden mijn pogingen om de tekst toe te voegen worden behandeld als aaneensluitende tekst, wat niet is wat ik zoek in dit voorbeeld. Zoals ik al zei, is dit de gemeenschappelijke aanpak die ik zie, maar is dit noodzakelijkerwijs de snelste aanpak? Het antwoord is nee.

met behulp van een ArrayList

het antwoord op betere prestaties ligt in het gebruik van een ArrayList. Zoals je meer en meer kunt zien met het krijgen van betere prestaties uit PowerShell, zul je meestal een beweging te zien in de richting van het gebruik van een aantal .,Net instances om soortgelijke bewerkingen uit te voeren die kunnen worden gedaan met werkelijke PowerShell-opdrachten of operators. Dus iets wat ik hierboven deed kan als volgt worden gedaan:

 $a = New-Object System.Collections.ArrayList$a.Add('data')$a.Add('test')$a

de 0 en 1 die je ziet worden uitgevoerd elke keer dat ik een item toevoeg geeft de index aan waarvan het item is toegevoegd aan de collectie. Dus ‘ data ‘werd toegevoegd aan de 0 index en’ test ‘ werd toegevoegd aan de 1 index. Dit kan behoorlijk vervelend zijn naar mijn mening en kan de pijpleiding vervuilen en ongewenste resultaten opleveren. U kunt dit omzeilen door ervoor te zorgen dat de gegevens worden verzonden naar een Null locatie.,

we hebben twee opties voor het maken van een verzameling items die voor ons zijn opgezet, maar de volgende vraag is welke het snelst is? Laten we dat uitzoeken!

Ik zeg niet dat ArrayList elke keer won … wacht, dat zeg ik! Naarmate het totale aantal items dat aan elke collectie werd toegevoegd, toenam, nam de tijd ook toe voor elk van de benaderingen, waarbij de += aan het einde nogal dramatisch toenam. Wat er gebeurt met de + = operator is dat het eigenlijk bouwt een nieuwe array elke keer dat u de operator gebruikt, zodat het kan het nieuwe item toe te voegen aan de collectie., Niet echt efficiënt, maar het klaart de klus. U zult niet vinden dat met de ArrayList aanpak als het voegt het item recht in de collectie.

zoals met elk van deze typen performance tests, heb ik de eenvoudige en extreme situaties behandeld, dus als je absoluut elke mogelijke milliseconde uit je PowerShell scripts wilt persen, dan zou je zeker naar de ArrayList benadering willen kijken.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *