c – 班级成员的最优顺序是什么?
发布时间:2020-12-16 05:30:03 所属栏目:百科 来源:网络整理
导读:如果我有以下类: 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;}; 会员的最优顺序是什么?据我所知,在创建该类的实例时,成员的声明顺序等于内存中成员的顺序. 我应该对成员进行
如果我有以下类:
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; }; 会员的最优顺序是什么?据我所知,在创建该类的实例时,成员的声明顺序等于内存中成员的顺序. >我应该对成员进行排序,以使相等的类型在一起吗? 解决方法
根据经验,你应该按尺寸排序,从更小到更小.这将创建结构的最小填充,从而最小化结构尺寸.如果结构的对象在连续分配的存储器中使用,则这是最重要的.向量和帮助很多缓存(更多的对象适合在同一个高速缓存行).
安德烈·亚历山大·库雷斯(Andrei Alexandrescu)所表现的另一个令人惊讶的优化(我认为在CppCon之一)是他最先获得的成员.这是更快的,因为偏移量为零.当然,他正在谈论微型优化,在将应用程序定位到基准之后,并关心每一个小小的性能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |