如何用跳转复制数组?

时间:2015-02-10 23:24:30

标签: java arrays

在我的JAVA程序中,我需要将数组中的元素“插入”到具有相等间隔(4个元素)的特定位置的另一个数组。例如:

byte[] orig = new byte[100000];
byte[] target = new byte[100000*4];
for(int j=0;j<orig.length;j++)
    target[j*4]=orig[j];

上面的代码运行正常但速度太慢 - 我的笔记本电脑上大约50毫秒。有几种方法可以在几毫秒内完成相同的工作吗?

1 个答案:

答案 0 :(得分:2)

如果通过使origtarget大小相同但使用乘法访问其索引来反转您的思考方式,则可以使用System.arraycopy,{{1} }或Arrays.copyOf,其中任何一个都可能更快。 clone应使用arraycopy或引擎盖下的内容。 memcpy可能会调用copyOf

那就是。

arraycopy

请注意,由于数组元素不再是连续的,因此缓存性能可能会更差。 (我不知道多少。最好相信一个分析器。)