有没有一种有效的方法来获取 C# 数组的一个子集并将其传递给另一段代码(而不修改原始数组)?我使用 CUDA.net,它具有将数组复制到 GPU 的功能。我想例如将数组的第 10 个传递给函数,然后将数组的第 10 个分别复制到 GPU(用于流水线目的)。
以这种方式复制数组应该和一次性复制一样高效。它可以使用不安全的代码并仅引用正确的内存位置来完成,但除此之外我不确定。 CopyTo 函数将整个数组复制到另一个数组,因此这似乎没有用。
最佳答案
好吧,我之前误解了这个问题。
你要的是System.Buffer.BlockCopy或 System.Array.Copy .
LINQ 方法效率极低。如果您能够重用要复制到的缓冲区,那也将有助于提高效率,避免每次都创建一个新数组 - 只需复制到顶部即可。除非你可以将你的“大”数组平均划分,否则你将需要一个新的数组来处理最后一种情况。
关于c# - 高效获取数组子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268513/