2016-07-17 11 views
-3

アルゴリズムの場合、配列のコピーが必要です。オリジナルと温度をお持ちください。 "turn"を処理する必要があるので、tempを使用することはできますが、その状態から開始する必要があります。Java配列の速度:コピー&再使用または新規作成

各ターンの後、テンポラリーで行われます(ただし、次の反復のためにもう一度必要です)。一時的に元のものにコピーしたり、元のものを一時的なものに割り当てて、一時的な新しい配列を作成するほうがよいでしょうか?サイズは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? 
    } 

どちらが速くなるのでしょうか。 JVMのために十分なRAM /フリー・ヒープがあれば、それはほぼ同じです(どんなシステムでも)?

+1

プロファイリング/タイムアウトしたときの結果はどこにありますか? –

+0

なぜダウン投票?みんなに明らかな配列スワップか、質問は明確ではないのですか? – tgkprog

答えて

1

tempをオリジナルにコピーするか、オリジナルをtempに割り当ててtempの新しい配列を作成する方が良いですか?

どちらも実行しない方が良いです。配列の参照を入れ替えるだけです。

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

これは新しいアレイ割り当て回避(ランタイムによってクリアする必要があり、以前のアレイは、いくつかの時点でガベージコレクションであることが必要)。

+0

スワップが見えます。私は、コードの最後の行はorig = tでなければならないと思います。 ?他のオブジェクトのスワップを完了しました。ちょうど実現したことは配列のためにもできます。 – tgkprog

関連する問題