0

以下哪项在 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];
    }
4

1 回答 1

2

执行使变量“矩阵”在运行结束时处于等效状态的动作的最快方法是int[][] matrix = new int[50][50];

但是,这些解决方案在操作数量或内存抖动方面都不是等效的。我提供的声明就是你要找的。

更新:随着您更新的问题,您在哪里操作矩阵,然后重置它。

您的第二个示例在每次迭代中可能会更快。想法是分配内存比迭代和设置变量 50^2 次要快。虽然这是一个探查器的问题。一般来说,将内存归零是 JVM 比您的应用程序更好地优化的东西。

话虽如此,重要的是要记住,在极端情况下,内存分配并非没有警告。如果您过于频繁地分配和丢弃内存,您可能会遇到次优的 GC 体验。

于 2012-09-24T20:56:48.577 回答