.net 为什么在Powershell中将PSObject添加到ArrayList需要这么长时间?还有更好的办法吗?

.net 为什么在Powershell中将PSObject添加到ArrayList需要这么长时间?还有更好的办法吗?,.net,performance,powershell,powershell-3.0,.net,Performance,Powershell,Powershell 3.0,我有以下代码 $listA = *some list of 1000 items* $listB = *other list* $newList = New-Object System.Collections.ArrayList foreach($a in $listA) { $b = get somevalue from list $listB $temp = New-Object PSObject $temp | Add-Member Name $a $te

我有以下代码

$listA = *some list of 1000 items*
$listB = *other list*

$newList = New-Object System.Collections.ArrayList
foreach($a in $listA) {
    $b = get somevalue from list $listB
    $temp = New-Object PSObject
    $temp | Add-Member Name $a
    $temp | Add-Member Age $b
    $newList.Add($temp) | Out-Null
}

我也用简单的阵列测试了性能,这更糟糕

我认为性能问题不是arralist,而是对象创建

使用
Add Member
构建对象是一种V1构造,实际上是创建对象效率最低的方法。每个
添加成员
都会破坏原始对象并创建一个全新的对象。因为您已经用V3标记了这个问题,这里有一个更好(更快)的方法来创建对象:

$listA = *some list of 1000 items*
$listB = *other list*

$newList = New-Object System.Collections.ArrayList
foreach($a in $listA) {
    $b = get somevalue from list $listB
    $Object = [PSCustomObject]@{
    Name = $a
    Age = $b
    }
  $newList.Add($Object)

 }