从数组中分离数据的快速方法(C#)

问题描述 投票:0回答:1

你好,

我有一个包含一些数据的 int 数组。该阵列从 4 通道设备收集数据。 每秒按设备数组填充如下:(数据收集约 200000 个数字

 int[] data = new data[]{1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,...};
//data[0] received from Channel 0
//data[1] received from Channel 1 
//data[2] received from Channel 2 
//data[3] received from Channel 3
//data[4] received from Channel 0
//data[5] received from Channel 1 
//data[6] received from Channel 2 
//data[7] received from Channel 3
// to end...

并结束。每一秒之后我都必须分离通道的数据进行处理。 为了分离每个通道,我使用以下代码:

double[] ai1 = new double[data.Length/4];
double[] ai2 = new double[data.Length/4];
double[] ai3 = new double[data.Length/4];
double[] ai4 = new double[data.Length/4];
for (int i = 0; i < data.Length/4; i++)
{
    ai1[i] = data[i * 4 + 0];
    ai2[i] = data[i * 4 + 1];
    ai3[i] = data[i * 4 + 2];
    ai4[i] = data[i * 4 + 3];
}

有什么快速的方法可以将该数组分成四个子数组吗?

谢谢。

更新:----------------

我使用“Parallel.For”,在我的计算机上大约需要 0.02ms。 但如果我使用简单的“for”,大约需要0.001ms

 double[] ai1 = new double[data.Length / 4];
 double[] ai2 = new double[data.Length / 4];
 double[] ai3 = new double[data.Length / 4];
 double[] ai4 = new double[data.Length / 4];
 Parallel.For(0, data.Length / 4, i =>
 {
     ai1[i] = data[i * 4 + 0];
     ai2[i] = data[i * 4 + 1];
     ai3[i] = data[i * 4 + 2];
     ai4[i] = data[i * 4 + 3];
 });
c# arrays
1个回答
0
投票

真的有必要获取第一个数组中的数据吗?因为如果没有,您可以首先使用 4 个单独的数组来获取数据,这样您就不必每秒循环每个数据。

© www.soinside.com 2019 - 2024. All rights reserved.