在我的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毫秒。有几种方法可以在几毫秒内完成相同的工作吗?
答案 0 :(得分:2)
如果通过使orig
与target
大小相同但使用乘法访问其索引来反转您的思考方式,则可以使用System.arraycopy
,{{1} }或Arrays.copyOf
,其中任何一个都可能更快。 clone
应使用arraycopy
或引擎盖下的内容。 memcpy
可能会调用copyOf
。
那就是。
arraycopy
请注意,由于数组元素不再是连续的,因此缓存性能可能会更差。 (我不知道多少。最好相信一个分析器。)