gpt4 book ai didi

c++ - 类(class)成员的最佳顺序是什么?

转载 作者:可可西里 更新时间:2023-11-01 16:28:05 29 4
gpt4 key购买 nike

如果我有以下类(class):

class Example
{
bool m_b1;
SomeClass m_sc;
bool m_b2;
char * m_name;
bool m_b3;
int m_i1;
SomeClass * m_sc;
int m_i2;
};

成员的最佳顺序是什么?据我所知,在创建此类的实例时,成员声明的顺序等于内存中成员的顺序。

  • 我应该对成员进行排序以使类型相同的成员在一起吗?
  • 是否所有指针都算作同一类型?
  • 重新排列对物体的大小有影响吗?此处适用 4 字节还是 8 字节对齐?
  • 如何查看上述效果? sizeof 是否显示对象使用的内存,包括用于对齐的空白空间?
  • 在一天结束时对成员进行排序是否更好,以便他们的含义和上下文更容易理解?

最佳答案

根据经验,您应该按尺寸从大到小排序。这将创建结构的最小填充,从而最小化结构大小。如果结构的对象用于连续分配的内存中,这最重要,例如vector 并且对缓存有很大帮助(更多对象适契约(Contract)一缓存行)。

Andrei Alexandrescu(我想是在 CppCon 之一)展示的另一个令人惊讶的优化是,他首先带来了最常访问的成员。这更快,因为偏移量为零。当然,在对应用程序进行基准测试并关注每一点性能之后,他谈论的是微优化。

关于c++ - 类(class)成员的最佳顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35196871/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com