現在、タイルに基づいて2次元ゲームを開発中です。現時点では、私は全世界を救うためのプロセスを書いています。一般に、世界は10000×10 = 1.100.000ブロック大きいです。明らかに、それはJavaの問題ではありませんが、それはあります。Javaの2dタイル保存:繰り返し回数が1回につき5秒になるとループが遅くなる
は、ここに私のループです:
Material[][] blocks = g.gameState.getLevel().tiles;
int y = 0;
int blocksHor = g.gameState.getLevel().getBlocksHor();
for(int x = 0; x < blocksHor; x++) {
world += blocks[y][x] + " ";
if(x >= blocksHor - 1) {
x = 0;
y++;
System.out.println("LAYER " + y + " => " + (System.currentTimeMillis() - now) + " ms");
now = System.currentTimeMillis();
}
}
ループが理解することが少し難しいですが、私はすでにどこに私ができる最適化しようとしました。コンソールの出力は次のとおりです。
LAYER 1 => 86 ms
LAYER 2 => 276 ms
LAYER 3 => 424 ms
LAYER 4 => 618 ms
LAYER 5 => 561 ms
LAYER 6 => 541 ms
LAYER 7 => 755 ms
LAYER 8 => 885 ms
LAYER 9 => 1036 ms
これらの処理は、最長で50秒以上かかることがあります。
このループで何が問題になっていますか?私は正直なところ、この問題をどのように解決すべきか分かりません。
ありがとうございました:)
[StringBuilder](https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html)を試してみてください。 –