Производительность PowerShell

Слу­шай­те, поче­му встро­ен­ные в шелл объ­ек­ты дан­ных име­ют такую жут­кую про­из­во­ди­тель­ность?

Вот создал я дина­мицц­кий мас­сив:

$array = @()

И после это­го я добав­ляю в него запи­си:

$array += $record

Как толь­ко коли­че­ство запи­сей в нём ста­но­вит­ся более при­мер­но двух тысяч, оно начи­на­ет про­сто ДИЧАЙШЕ тор­мо­зить. measure-command гово­рит, что на каж­дую опе­ра­цию ухо­дит аж до 10 мил­ли­се­кунд! Что, кажет­ся быст­ро? Создать мас­сив из 50 тысяч запи­сей (по совре­мен­ным мер­кам — это вооб­ще ни о чём) потре­бу­ет почти деся­ти минут вре­ме­ни.

Хоро­шо хоть, что шелл уме­ет в исполь­зо­ва­ние дотне­тов­ских объ­ек­тов:

$array = [System.Collections.ArrayList]::new()

После чего $array.Add($record) на 50 кило­за­пи­сей уле­та­ет по тру­бам про­цес­со­ра про­сто со сви­стом.

Но чрез­вы­чай­но низ­кая про­из­во­ди­тель­ность встро­ен­ных струк­тур дан­ных, пря­мо ска­жем, уди­ви­ла. Я, конеч­но, не ожи­дал про­из­во­ди­тель­но­сти Джа­вы, но как-то оно тово, удру­ча­ет.