将部分数组传递给函数

时间:2015-08-24 14:29:03

标签: arrays vb.net function copy partial

这真的是一个关于效率的问题,我想......

我有一个设备可以在一个数组中提供(图像)数据,然后传递给第三方库,如下所示:

Private Sub NewData(TheData() as ushort)

    LibraryFunction(TheData)

End Sub

这很好用,除了设备有效运行之外它还使用了一个环形缓冲区,为此要求图像数据阵列是' n'乘以图像数据的长度,其中' n'是环形缓冲区的深度。这很好,因为当我从设备接收数据时,我也会收到图像帧的索引。

我想写的是:

Private Const ImageDataLength = somenumber
Private Sub NewData(TheData() as ushort, bufferIndex as long)

    LibraryFunction(TheData(bufferIndex * ImageDataLength))

End Sub

但是LibraryFunction只接受一个数组(ushort),所以为了完成这项工作,我必须做以下事情:

Private Const ImageDataLength = somenumber
Private Sub NewData(TheData() as ushort, bufferIndex as long)

    Dim tmp(ImageDataLength) As ushort
    Array.Copy(TheData, (bufferIndex * ImageDataLength, tmp, 0, ImageDataLength)
    LibraryFunction(tmp)

End Sub

再次,工作正常但是有明显的额外数据副本正在进行中。鉴于每个图像数据块实际上是15MB并且我试图保持帧速率,我很想失去array.copy

关于如何使其尽可能高效的任何想法?

由于

0 个答案:

没有答案