volt egy kis megjegyzések egy friss teljesítmény-összehasonlító cikket, ami jól fogadták, s biztatott, hogy írok még pár ilyen hasonló cikkek. Tehát minden további nélkül, lehetővé teszi, hogy elkezdjük nézi hozzá elemeket egy tömb, és melyik megközelítés lenne jobb a teljesítmény szempontjából.
általában a leggyakoribb megközelítés, amelyet a PowerShell tömb elemeinek hozzáadásával látok, a += operátor használata.,
$a = @()$a += 'data'$a$a += 'test'$a
volt, hogy első inicializálása a tömb, különben a kísérletek hozzá a szöveget helyett tekinteni összefűző szöveg, ami nem, hogy mit is keresek ebben a példában. Mint mondtam, ez a közös megközelítés, amit látok, de ez feltétlenül a leggyorsabb megközelítés? Nos, a válasz nem.
ArrayList segítségével
A jobb teljesítményre adott válasz egy ArrayList használata. Amint egyre többet láthat a PowerShell jobb teljesítményének elérésével, általában egy lépést fog látni néhány használata felé .,Net példányok hasonló műveletek végrehajtásához, amelyeket tényleges PowerShell parancsok vagy operátorok segítségével lehet elvégezni. Tehát valami, amit fent tettem, a következőképpen hajtható végre:
$a = New-Object System.Collections.ArrayList$a.Add('data')$a.Add('test')$a
Az a 0 és 1, amelyet minden alkalommal, amikor egy elemet adok hozzá, jelzi azt az indexet, amelynek az elemet hozzáadták a gyűjteménybe. Így a 0 indexhez “adat”, az 1 indexhez “teszt” került. Ez véleményem szerint elég bosszantó lehet, szennyezheti a csővezetéket, és nemkívánatos eredményeket hozhat. Akkor kap körül ezt ügyelve arra, hogy az adatokat küldött Null helyen.,
két lehetőségünk van az előttünk felállított elemek gyűjteményének létrehozására, de a következő kérdés az, hogy melyik a leggyorsabb? Derítsük ki!
nem azt mondom, hogy ArrayList nyert minden alkalommal … várj, azt mondom, hogy! Mivel az egyes gyűjteményekhez hozzáadott elemek száma nőtt, az idő az egyes megközelítések esetében is nőtt, a += pedig drámaian növekszik a vég közelében. Mi történik a + = operátorral, hogy valójában új tömböt épít ki minden alkalommal, amikor az operátort használja, így hozzáadhatja az új elemet a gyűjteményhez., Nem éppen hatékony, de megkapja a munkát. Ezt nem fogja megtalálni az ArrayList megközelítéssel, mivel az elemet közvetlenül hozzáadja a gyűjteményhez.
mint az ilyen típusú teljesítménytesztek bármelyikénél, lefedtem az egyszerű extrém típusú helyzeteket, tehát ha feltétlenül ki akarja szorítani az összes lehetséges milliszekundumot a PowerShell szkriptjeiből, akkor biztosan meg akarja nézni az ArrayList megközelítést.