Распределяет ли C # массив структур как структуру массивов в памяти? - PullRequest
0 голосов
/ 22 мая 2019

Мне интересно, есть ли какая-либо разница в этих 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 дает непрерывное расположение данных, но выполняет точно то же самое.

...