Мне трудно понять, как наиболее эффективно обрабатывать большие наборы данных/массивы в PowerShell. У меня есть массивы с несколькими миллионами элементов, которые мне нужно обработать и сгруппировать. Этот список всегда разный по размеру, что означает, что он может быть 3,5 миллиона элементов или 10 миллионов элементов.
Пример: 3,5 миллиона элементов, которые они группируют по четвёркам, например:
Пункты 0,1,2,3 Сгруппировать вместе 4,5,6,7 Сгруппировать вместе и так далее.
Я попытался обработать массив с помощью одного потока, прокручивая список и назначая pscustomobject, который работает, для его завершения требуется всего 45-50+ минут.
Я также попытался разбить массив на более мелкие массивы, но это приводит к тому, что процесс выполняется еще дольше.
$i=0
$d_array = @()
$item_array # Large dataset
While ($i -lt $item_array.length){
$o = "Test"
$oo = "Test"
$n = $item_array[$i];$i++
$id = $item_array[$i];$i++
$ir = $item_array[$i];$i++
$cs = $item_array[$i];$i++
$items = [PSCustomObject]@{
'field1' = $o
'field2' = $oo
'field3' = $n
'field4' = $id
'field5' = $ir
'field6'= $cs
}
$d_array += $items
}
Я полагаю, что если бы я применил планировщик заданий, который позволил бы мне запускать несколько заданий, это значительно сократило бы время процесса, но я хотел, чтобы другие взяли на себя быстрый и эффективный способ решения этой проблемы.