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

実行の終了時に変数「matrix」を同等の状態のままにするアクションを実行する最速の方法は、次のとおりです。int[][] matrix = new int[50][50];

ただし、これらのソリューションはいずれも、操作数やメモリスラッシュの点で同等ではありません。私が提供した声明はあなたが探しているものです。

更新:マトリックスを操作してからリセットする更新された質問を使用します。

2番目の例は、反復ごとに高速になる可能性があります。変数を50^2回繰り返して設定するよりも、メモリを割り当てる方が速いと考えられています。これはプロファイラーへの質問ですが。一般に、メモリをゼロにすることは、アプリケーションよりもJVMによって最適化されるものです。

そうは言っても、極端なシナリオでは、メモリの割り当てに注意が必要なわけではないことを覚えておくことが重要です。メモリを頻繁に割り当ててゴミ箱に移動すると、GCエクスペリエンスが最適化されない可能性があります。

于 2012-09-24T20:56:48.577 に答える