Следующим пунктом идет Java 7. Технология, стоящая за оригинальным Minecraft.
package bigarrayjava;
import java.util.Random;
public class BigArrayJava
{
public static void main(String[] args)
{
int counter = 0;
long allocateStart = System.currentTimeMillis();
int[][][] voxelData = new int[512][128][512];
long allocateStop = System.currentTimeMillis();
long allocateElapsed = allocateStop - allocateStart;
System.out.println("Allocate: " + allocateElapsed + " ms");
long fillStart = System.currentTimeMillis();
for(int i = 0; i < 20; i++)
{
for(int x = 0; x < 512; x++)
{
for(int y = 0; y < 128; y++)
{
for(int z = 0; z < 512; z++)
{
voxelData[x][y][z] = counter++;
}
}
}
}
long fillStop = System.currentTimeMillis();
long fillElapsed = (fillStop - fillStart) / 20;
System.out.println("Fill: " + fillElapsed + " ms");
Random random = new Random();
int randomX = random.nextInt(511);
int randomY = random.nextInt(127);
int randomZ = random.nextInt(511);
System.out.println("Random element at (" + randomX + "," + randomY + "," + randomZ + ") is "
+ voxelData[randomX][randomY][randomZ]);
}
}
Результаты:
время выделения памяти под массив: 265 мс
время заполения массива: 41 мс
Гордость и величие дотнета померкли и скукожились. Java выигрывает на заполнении массива в более чем 4 раза.
Так и хочется спросить, Нотч, почему Майнкрафт так тормозит???