Welcome to Our Website

Hurtig Hits: Tilføjelse af Elementer til et Array og et Kig på Performance

jeg havde nogle kommentarer til en nyere performance sammenligning artikel, der blev godt modtaget, og opfordrede mig til at skrive nogle flere af disse lignende artikler. Så uden videre, lad os komme i gang med at se på at tilføje elementer til en Matri., og hvilken tilgang ville være bedre med hensyn til ydeevne.

typisk er den mest almindelige tilgang, som jeg ser med at tilføje elementer til et array i Po .ershell, ved hjælp af + = – operatøren.,

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

Jeg var nødt til først at initialisere arrayet, ellers ville mine forsøg på at tilføje teksten i stedet blive behandlet som sammenkædende tekst, hvilket ikke er det, jeg leder efter i dette eksempel. Som jeg sagde, Er dette den fælles tilgang, som jeg ser, men er det nødvendigvis den hurtigste tilgang? Godt, svaret er nej.

brug af en ArrayList

svaret på bedre ydeevne er i brugen af en ArrayList. Som du måske ser mere og mere med at få bedre ydeevne ud af Po .ershell, vil du typisk se et skridt i retning af at bruge nogle .,Net forekomster til at udføre lignende operationer, der kan gøres ved hjælp af faktiske Po .ershell kommandoer eller operatører. Så noget, som jeg gjorde ovenfor kan gøres som følgende:

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

0 og 1, som du ser der udlæses hver gang jeg tilføje et element angiver indeks for, hvor elementet blev tilføjet til samlingen. Så ‘data’ blev tilføjet på 0 indekset og ‘test’ blev tilføjet til 1 indekset. Dette kan være temmelig irriterende efter min mening og kan forurene rørledningen og give uønskede resultater. Du kan omgå dette ved at sikre dig, at data sendes til en Null-placering.,

Vi har to muligheder for at oprette en samling af varer, der er oprettet foran os, men det næste spørgsmål er, hvilken er den hurtigste? Lad os finde ud af det!

Jeg siger ikke, at ArrayList vandt hver gang…Vent, jeg siger det! Da det samlede antal elementer, der blev tilføjet til hver samling, steg, steg tiden også for hver af tilgange med + = stigende temmelig dramatisk nær slutningen. Hvad der sker med += operatøren er, at det faktisk opbygger en ny Matri.hver gang du bruger operatøren, så det kan tilføje det nye element til samlingen., Ikke ligefrem effektiv, men det får arbejdet gjort. Du vil ikke finde, at med ArrayList tilgang, da det tilføjer elementet lige ind i samlingen.

som med nogen af disse typer præstationstest dækkede jeg den enkle op den ekstreme type situationer, så hvis du absolut vil presse alle mulige millisekunder ud af dine Po .ershell-scripts, så vil du helt sikkert se på ArrayList-tilgangen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *