是否有算法重新排序结构成员以最小化对齐填充?

时间:2016-09-18 18:04:01

标签: algorithm sorting language-design memory-alignment

我一直在创建一种编程语言,默认情况下,我一直在尝试重新排序结构/记录成员的(内存)效率和性能。目前,我按最大到最小重新排序成员(如果它们的大小相同,则按原始顺序重新排序)。但是,在所有情况下,这都不会最小化对齐填充。

是否有算法重新排序结构成员以最小化对齐填充? (问题本身难以解决吗?)算法必须考虑成员的对齐而不仅仅是其大小。

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;
};

0 个答案:

没有答案