И используй 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 на заливку.