说我有一个简单的C ++类,其中包含各种具有不同大小的类型。 据我了解,大小相同的类型应组合在一起以最大程度地实现内存对齐。假设我的目标是最大化内存效率
订购不同尺寸的类型的最佳方法是什么?在下面的示例中,假设HeavyClass
是一个大对象。在末端放置大物件是否正确?
class MyClass {
int d_someInt;
int d_anotherInt;
long d_someLong;
HeavyClass d_heavyClass;
};
像缓存局部性,可读性之类的通常情况适用,但所有其他条件都相同,我想最大化对齐方式。
答案 0 :(得分:2)
说我有一个简单的C ++类
然后保持这种状态,以一种使您的类易于阅读且易于推理的方式对成员进行排序。
答案 1 :(得分:1)
最大化对齐方式只是一个潜在的目标,您可能还希望根据使用情况进行分组(将一起使用的成员在类定义中彼此靠近)。由于缓存命中(使CPU不必经常从主内存中获取数据),使成员彼此靠近使用会提高性能。当您拥有类型的数组时,最大化对齐方式最有可能是一种理想的策略,这样就不会有太多的未使用填充。