gpt4 book ai didi

arrays - 在 PowerShell 中处理大型数组

转载 作者:行者123 更新时间:2023-12-04 10:59:52 24 4
gpt4 key购买 nike

我很难理解在 PowerShell 中处理大型数据集/数组的最有效方法。我的数组有几百万个需要处理和分组的项目。这个列表的大小总是不同的,这意味着它可能是 350 万个项目或 1000 万个项目。

示例:他们按“4”分组的 350 万个项目,如下所示:

项目 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

}

我想如果我应用了一个允许我运行多个作业的作业调度程序,将大大减少处理时间,但我想让其他人采用一种快速有效的方法来解决这个问题。

最佳答案

如果您正在处理大数据,使用 C# 也是有效的。

Add-Type -TypeDefinition @"
using System.Collections.Generic;

public static class Test
{
public static List<object> Convert(object[] src)
{
var result = new List<object>();
for(var i = 0; i <= src.Length - 4; i+=4)
{
result.Add( new {
field1 = "Test",
field2 = "Test",
field3 = src[i + 0],
field4 = src[i + 1],
field5 = src[i + 2],
field6 = src[i + 3]
});
}
return result;
}
}
"@

$item_array = 1..10000000
$result = [Test]::Convert($item_array)

关于arrays - 在 PowerShell 中处理大型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56406847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com