Welcome to Our Website

quick Hits: adicionando itens a um Array e uma olhada no desempenho

eu tive alguns comentários sobre um recente artigo de comparação de desempenho que foram bem recebidos e me encorajou a escrever mais alguns desses artigos semelhantes. Assim, sem mais ado, vamos começar a olhar para a adição de itens a um array e que abordagem seria melhor em termos de desempenho.

tipicamente, a abordagem mais comum que eu vejo com a adição de itens a uma matriz em PowerShell é através do uso do operador+=.,

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

tive de inicializar primeiro o array, caso contrário as minhas tentativas de adicionar o texto seriam tratadas como texto concatenante, o que não é o que estou à procura neste exemplo. Como disse, esta é a abordagem comum que vejo, mas será necessariamente a abordagem mais rápida? Bem, a resposta é não.

usando um ArrayList

A resposta para um melhor desempenho está no uso de um ArrayList. Como você pode ver mais e mais com obter um melhor desempenho fora do PowerShell, você tipicamente verá um movimento para usar alguns .,Instâncias Net para realizar operações semelhantes que podem ser feitas usando comandos PowerShell reais ou operadores. Então algo que eu fiz acima pode ser feito como o seguinte:

o 0 e 1 que você vê sendo outputted cada vez que eu adiciono um item indica o índice do qual o item foi adicionado na coleção. Assim, os “dados” foram adicionados ao índice 0 e o “teste” foi adicionado ao índice 1. Isto pode ser bastante irritante na minha opinião e pode poluir o gasoduto e trazer resultados indesejáveis. Você pode contornar isso, certificando-se de que os dados são enviados para um local nulo.,

temos duas opções para criar uma coleção de itens configurados antes de nós, mas a próxima questão é Qual é o mais rápido? Vamos descobrir!não estou a dizer que o ArrayList ganhou sempre…espera, estou a dizer isso! Como o número total de itens adicionados a cada coleção aumentou, o tempo também aumentou para cada uma das abordagens com o += aumentando bastante dramaticamente perto do fim. O que está acontecendo com o operador += é que ele realmente constrói um novo array cada vez que você usa o operador para que ele possa adicionar o novo item à coleção., Não é propriamente eficiente,mas faz o trabalho. Você não vai encontrar isso com a abordagem do ArrayList como ele adiciona o item direito à coleção.

Como Acontece com qualquer um destes tipos de testes de desempenho, eu cobri o simples até o tipo extremo de situações, então se você absolutamente quer espremer cada milisegundo possível de seus scripts PowerShell, então você definitivamente gostaria de olhar para a abordagem do ArrayList.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *