我有大量的 XML 节点,有时多达 40 万个项目。我使用 where-object 来根据 Type 属性选择项目。我的问题是遍历这些项目需要相当长的时间,如果我可以删除刚刚从数组中选择的项目会更容易,这样下一个对象的数组会更小。这就是我正在做的事情:
$subset = $items | Where-Object {$_.Type -eq "2"}
'prosess ItemType 2'
$subset = $items | Where-Object {$_.Type -eq "4"}
'prosess ItemType 4'
$subset = $items | Where-Object {$_.Type -eq "8"}
'prosess ItemType 8'
问题是每次我必须$items
再次迭代,而不是迭代之前的剩余内容where-object
where-object 是单线程操作并且仅在一个内核上执行也无济于事
我在想的是这样的,但我不确定它是否会表现得更好:
$subset = $items | Where-Object {$_.Type -eq "2"}
$items = $items | Where-Object {$_.Type -ne "2"}
'prosess ItemType 2'
$subset = $items | Where-Object {$_.Type -eq "4"}
$items = $items | Where-Object {$_.Type -ne "4"}
'prosess ItemType 4'
$subset = $items | Where-Object {$_.Type -eq "8"}
'prosess ItemType 8'