Показать сообщение отдельно
Старый 26.11.2011, 03:02   #5
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Великая битва 4х языков программирования на простейшей задачке

Следующим пунктом идет 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 раза.
Так и хочется спросить, Нотч, почему Майнкрафт так тормозит???
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
Arton (27.09.2012), cahekp (28.11.2011), pax (28.11.2011), Randomize (26.11.2011), Romanzes (27.11.2011), St_AnGer (26.11.2011)