Welcome to Our Website

accesări rapide: adăugarea de elemente într-o matrice și o privire asupra performanței

am avut câteva comentarii la un articol recent de comparație a performanței care au fost bine primite și m-au încurajat să scriu mai multe dintre aceste articole similare. Deci, fără alte formalități, să începem să ne uităm la adăugarea de elemente într-o matrice și care abordare ar fi mai bună în ceea ce privește performanța.de obicei, cea mai comună abordare pe care o văd cu adăugarea de elemente într-o matrice în PowerShell este prin utilizarea operatorului+=.,

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

mai întâi a trebuit să inițializa matrice, în caz contrar încercările mele de a adăuga text, în loc să fie tratate ca concatenarea textului, care nu este ceea ce caut în acest exemplu. După cum am spus, Aceasta este abordarea comună pe care o văd, dar este neapărat cea mai rapidă abordare? Ei bine, răspunsul este nu.

folosind un ArrayList

răspunsul la o performanță mai bună este în utilizarea unui ArrayList. După cum puteți vedea din ce în ce mai mult cu obținerea unei performanțe mai bune din PowerShell, veți vedea de obicei o mișcare spre utilizarea unora .,Instanțe nete pentru a efectua operații similare care pot fi realizate folosind comenzi sau operatori PowerShell reali. Deci, ceva ce am făcut mai sus se poate face în felul următor:

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

0 și 1, care vezi tu a fi scoase de fiecare dată când am adăuga un element indică indicele de care elementul a fost adăugat în colecție. Deci, „date” a fost adăugat la indicele 0 și „test” a fost adăugat la indicele 1. Acest lucru poate fi destul de enervant în opinia mea și poate polua conducta și poate aduce rezultate nedorite. Puteți evita acest lucru asigurându-vă că datele sunt trimise într-o locație nulă.,avem două opțiuni pentru crearea unei colecții de articole configurate în fața noastră, dar următoarea întrebare este care este cea mai rapidă? Să aflăm!

nu spun că ArrayList a câștigat de fiecare dată…stai, spun asta! Pe măsură ce numărul total de articole adăugate la fiecare colecție a crescut, timpul a crescut și pentru fiecare dintre abordări, cu += crescând destul de dramatic aproape de sfârșit. Ceea ce se întâmplă cu operatorul += este că construiește de fapt o nouă matrice de fiecare dată când utilizați operatorul, astfel încât să poată adăuga noul element în colecție., Nu chiar eficient, dar devine treaba. Nu veți găsi asta cu abordarea ArrayList, deoarece adaugă elementul direct în colecție.ca și în cazul oricăruia dintre aceste tipuri de teste de performanță, am acoperit simplul tip de situații extreme, deci dacă doriți absolut să stoarceți fiecare milisecundă posibilă din scripturile PowerShell, atunci cu siguranță doriți să vă uitați la abordarea ArrayList.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *