Java数组速度:copy&重新使用或创建新的

时间:2016-07-17 07:17:01

标签: java arrays memory memory-management

对于算法需要数组的副本。有原始和温度。需要处理"转弯"所以可以重新使用temp,但需要从那个状态开始。

每次转弯后,使用temp完成(但需要再次进行下一次迭代)。将temp复制到原始文件或者只是将原始文件分配给temp并为temp创建一个新数组是否更好?大小将是5x5到300x300 2D int数组。

//int [][]orig //initialized elsewhere
int [][]newData = new int[orig.length][orig[0].length];
for (int i = 0; i < turns; i++) {
        proc1Turn(orig, newData);
        //after 1 turn copy newData to orig OR assign to orig
        //and create new array for newData?
    }

哪种更快或更快?如果我们有足够的RAM /可用堆用于JVM,那么这对于任何系统都是一样的吗?

1 个答案:

答案 0 :(得分:1)

  

将temp复制到原始文件或将原始文件分配给temp并为temp创建一个新数组是否更好?

最好不要这样做。只需交换数组引用。

int [][] t = newdata;
newdata = orig;
orig = t;

这样可以避免分配一个新的数组(需要运行时清除它,并且需要在某个时刻对前一个数组进行垃圾回收)。