是否有一种有效的方法来获取C#数组的子集并将其传递给另一个代码(不修改原始数组)?我使用CUDA.net,它具有将数组复制到GPU的功能.我想例如将函数传递给数组的第10个,从而将每个第10个数组分别复制到GPU(用于流水线操作).
以这种方式复制数组应该像一次复制一样高效.它可以使用不安全的代码完成,只需引用正确的内存位置,但我不确定.CopyTo函数将整个数组复制到另一个数组,因此这似乎没有用处.
好吧,我以前误解了这个问题.
你想要的是System.Buffer.BlockCopy或System.Array.Copy.
LINQ方式将非常低效.如果你能够重用你正在复制的缓冲区,这也有助于提高效率,避免每次创建一个新数组 - 只需复制到顶部.除非你可以平分你的"大"阵列,否则你需要为最后一个案例添加一个新阵列.