Мне интересно, есть ли какая-либо разница в этих 2 конструкциях в памяти при написании c #?
Я сделал пример, и обе конструкции работают с одинаковой скоростью.
for (int i = 0; i < iterations; i++)
{
enArr[i].h = random.Next(0, 1000);
enArr[i].w = random.Next(0, 1000);
enArr[i].sum = Math.Sqrt(enArr[i].h)
+ Math.Sqrt(enArr[i].w);
Console.WriteLine($"AoS Sqr[{i}]: {enArr[i].sum}");
}
против
for (int i = 0; i < iterations; i++)
{
entities.h[i] = random.Next(0, 1000);
entities.w[i] = random.Next(0, 1000);
entities.sum[i] = Math.Sqrt(entities.h[i])
+ Math.Sqrt(entities.w[i]);
Console.WriteLine($"SoA Sqr[{i}]: {entities.sum[i]}");
}
Я ожидал, что последний будет быстрее, так как SoA дает непрерывное расположение данных, но выполняет точно то же самое.