Optimization 结构字节填充

Optimization 结构字节填充,optimization,struct,padding,semantic-analysis,Optimization,Struct,Padding,Semantic Analysis,从给定的情况来看,我们可以说我们能够以不同的方式声明结构数组。正如我总结的那样,不同之处在于空间优化,即: struct { /* 1600 bytes */ int a, c, e; char b, d; } array_of_struct [100]; 如代码顶部所示,这将占用1600字节。而这个 struct { /* 1400 bytes */ int a[100], c[100], e[100]; char b[100], d[100]; } stru

从给定的情况来看,我们可以说我们能够以不同的方式声明结构数组。正如我总结的那样,不同之处在于空间优化,即:

struct { /* 1600 bytes */
    int a, c, e;
    char b, d;
} array_of_struct [100];
如代码顶部所示,这将占用1600字节。而这个

struct { /* 1400 bytes */
    int a[100], c[100], e[100];
    char b[100], d[100];
} struct_of_array;

只需要1400字节。我的问题是,当我们在实际应用中使用这类东西时,它们之间是否存在语义上的差异?优化是好的,但是当我们将结构数组声明为不同的形式时,有可能改变代码的主要思想吗?

选择AoS和SoA是一个重要的优化主题,但通常是在内存访问模式而不是内存使用的背景下。我不清楚您希望我们回答什么问题?你能澄清一下吗?好的,在实际应用中哪一个更好?第一个还是第二个?