C#是否将结构数组分配为内存中的数组结构?

时间:2019-05-22 10:46:48

标签: c# performance compiler-optimization

我想知道编写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}");
        }

vs

        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可以提供连续的数据布局,但是执行的过程完全相同。

0 个答案:

没有答案