我需要获取大量的双打,并使用处理器密集型功能分块处理它。
我的原始数组非常大,大约 200MB 双倍的信号数据。
我需要将它分成 5000 个双精度块,使用返回单个双精度的函数处理具有一些处理器密集型数学的那些。需要这些函数结果中的每一个来创建稍后使用的有序数组。
我认为这对于使用 PLINQ 的并行性来说是最佳的,但我不太确定如何去做。
我编写的幼稚实现如下所示:
var processedList = new List<double>();
var chunk = new List<double>;
foreach (var rawSample in drop.RawSamples)
{
chunk.Add(rawSample);
if (chunk.Count == 5000)
{
// Do long processing here
processedList.Add(LongProcessingFunction(chunk));
chunk.Clear();
}
}
// Do something later with the list of processed values.....
那么,我从哪里开始使用 PLINQ?我需要能够使用处理器的所有内核来执行长时间、密集的功能。
我看到 IEnumerable 有一个 Take(n) 函数.....我可以使用它吗?
我可以在这里使用 AsParallel 吗?
谢谢!