Показать сообщение отдельно
Старый 28.11.2011, 11:29   #28
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Великая битва 4х языков программирования на простейшей задачке

И используй Jagged Array, он будет где-то в 2-3 раза быстрее.
теоретически должно быть сильно медленнее. особенно аллокация. и доступ тоже - из-за paging-а памяти.

упд. теория подтвердилась практикой:
using System;

namespace speedTest
{
    static class Program
    {
        static int Main()
        {
            int counter = 0;

            var a = DateTime.Now.Ticks;

            int[][][] map = new int[512][][];

            for (int y = 0; y < 512; ++y)
            {
                map[y]= new int[128][];

                for (int z = 0; z < 128; ++z)
                {
                    map[y][z] = new int[512];
                }
            }
            var allocate_time = DateTime.Now.Ticks - a;
            a = DateTime.Now.Ticks;
            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)
                        {
                            ++counter;
                            map[x][y][z] = counter;
                        }
                    }
                }
            }

            var fill_time = DateTime.Now.Ticks - a;
            Console.WriteLine("allocate time: {0}", allocate_time / 10000f);
            Console.WriteLine("fill time: {0}", (fill_time / 20f) / 10000f);
            Console.Read();
            return 0;
        }
    }
}
529 на аллокацию и 254 на заливку.
у меня вариант pax-а дает 2 на аллокацию и 176 на заливку.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (28.11.2011)