나는 일부 의견에 최근 성능 비교와 문서는 잘 받고 저도 작성 일부 이상의 유사한 기사입니다. 따라서 더 이상 고민하지 않고 배열에 항목을 추가하고 성능면에서 어떤 접근 방식이 더 나은지 살펴보기 시작할 수 있습니다.
일반적으로,가장 일반적인 접근 방식을 보고에 항목을 추가하는 배열에 PowerShell 의 사용을 통해 연산자.,
$a = @()$a += 'data'$a$a += 'test'$a
나를 먼저 초기화의 배열을,그렇지 않으면 나도 추가 텍스트가 대신으로 처리할을 연결하는 텍스트하지 않은,무엇이 내가 찾는 것이 예입니다. 내가 말했듯이,이것은 내가 보는 일반적인 접근법이지만,반드시 가장 빠른 접근법입니까? 글쎄,대답은’아니오’입니다.
ArrayList 를 사용하여
더 나은 성능에 대한 대답은 ArrayList 의 사용에 있습니다. 당신이 PowerShell 에서 더 나은 성능을 얻기와 함께 점점 더 볼 수 있듯이,당신은 일반적으로 일부를 사용하는쪽으로 이동을 볼 수 있습니다.,실제 PowerShell 명령 또는 연산자를 사용하여 수행 할 수있는 유사한 작업을 수행하는 net 인스턴스. 그래서 뭔가를했다는 것 위에 수행 할 수 있습이 다음과 같습니다.
$a = New-Object System.Collections.ArrayList$a.Add('data')$a.Add('test')$a
0 1 당신이 볼되는 출력은 각 시간을 추가하는 항목의 색인을 나타냅는 항목이 추가됨으로 컬렉션입니다. 따라서’데이터’가 0 인덱스에 추가되고’테스트’가 1 인덱스에 추가되었습니다. 이것은 내 의견으로는 꽤 성 가실 수 있으며 파이프 라인을 오염시키고 바람직하지 않은 결과를 가져올 수 있습니다. 데이터가 널 위치로 전송되는지 확인하여이 문제를 해결할 수 있습니다.,
우리 앞에 설정된 항목 모음을 만드는 두 가지 옵션이 있지만 다음 질문은 어느 것이 가장 빠릅니까? 알아 보자!
나는 ArrayList 가 매번 이겼다 고 말하는 것이 아닙니다… 각 컬렉션에 추가 된 총 항목 수가 증가함에 따라+=가 끝 부분에 다소 극적으로 증가하는 각 접근법에 대한 시간도 증가했습니다. 무슨 일이 일어나고 있는 연산자는 그것을 실제로 구축 밖으로 새로운 배열을 각 시간 연산자를 사용할 수 있도록 추가로 새로운 항목을의 컬렉션입니다., 정확하게 효율적이지는 않지만 일을 끝내게됩니다. ArrayList 접근 방식을 사용하면 항목을 컬렉션에 바로 추가 할 수 있으므로 찾을 수 없습니다.
으로 이러한 유형의 어떠한 성능 테스트 저는 단순하 극단적인 유형의 상황에서,그래서 당신이 절대적으로 원하는 짜는 가능한 모든 밀리초의 PowerShell,당신은 확실히 보고 싶어 ArrayList 접근 방식이다.피>