我一直在创建一种编程语言,默认情况下,我一直在尝试重新排序结构/记录成员的(内存)效率和性能。目前,我按最大到最小重新排序成员(如果它们的大小相同,则按原始顺序重新排序)。但是,在所有情况下,这都不会最小化对齐填充。
是否有算法重新排序结构成员以最小化对齐填充? (问题本身难以解决吗?)算法必须考虑成员的对齐而不仅仅是其大小。
C:
中的示例// Source Order
struct A { // size -> 10 Bytes
int8 a
int32 b;
int16 c;
};
// Optimal Internal Order
struct A { // size -> 7 Bytes
int32 b;
int16 c;
int8 a;
};
// Source Order
struct B { // size -> 20
int8 a[7];
int16 b[3];
int8 c;
int16 d;
};
// Optimal Internal Order
struct B { // Size -> 16
int16 b[3];
int16 d;
int8 a[7];
int8 c;
};