以下哪项在Java中更快?有没有比其中任何一种更快的其他方式?
int[][] matrix = new int[50][50];
for (int k=0;k<10;k++){
// some calculations here before resetting the array to zero
for (int i = 0; i <50; i++) {
for (int j = 0; j <50; j++) {
matrix[i][j]=0;
}
}
}
或者这个:
int[][] matrix = new int[50][50];
for (int k=0;k<10;k++){
// some calculations here before resetting the array to zero
matrix = new int[50][50];
}
答案 0 :(得分:2)
执行动作的最快方法是在运行结束时使变量“矩阵”处于等效状态int[][] matrix = new int[50][50];
但是,这些解决方案在操作次数或内存抖动方面都不相同。我提供的声明就是你要找的。 p>
更新:使用您更新的问题,您在哪里操作矩阵,然后重置矩阵。
您的第二个示例在每次迭代时可能会更快。这个想法是,分配内存比迭代更快,并设置变量50 ^ 2倍。虽然这是一个剖析器的问题。通常,将内存归零是JVM比应用程序更好地优化的。
这就是说,重要的是要记住,在极端情况下,内存分配并非没有警告。如果过于频繁地分配和删除内存,则可能会出现次优的GC体验。