теперь потестируем .NET 4 - технологию, отвечающую за скриптинг в движке Unity3D (это не совсем верно, т.к. в Unity используется Mono - аналог .NET Framework)
using System;
namespace BigArray
{
class Program
{
public static void Main(string[] args)
{
int counter = 0;
int allocateStart = Environment.TickCount;
int[,,] voxelData = new int[512,128,512];
int allocateStop = Environment.TickCount;
Console.WriteLine("Allocation time: {0} ms", allocateStop - allocateStart);
int fillStart = Environment.TickCount;
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++;
}
}
}
}
int fillStop = Environment.TickCount;
Console.WriteLine("Fill time: {0} ms", (fillStop - fillStart) / 20);
Random random = new Random();
int randomX = random.Next(0, 511);
int randomY = random.Next(0, 127);
int randomZ = random.Next(0, 511);
Console.WriteLine("Random array element at: ({0},{1},{2}) is {3}", randomX, randomY, randomZ, voxelData[randomX, randomY, randomZ]);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
И результаты:
время выделения массива: 0 мс
время заполения: 187 мс
Вот так, старичок Блиц нервно курит в стороне. Всё таки новые технологии явно лучше. Прямо проникаешься производительностью дотнета.