嵌套结构
Nested strcuture
我需要从优化的角度看待以下内容:
我有一个带有一些字段的结构:
struct cmp {
uint64_t count;
uint8_t var;
uint64_t val_1;
uint16_t val_2;
};
我拥有的一些字段可以移动到另一个结构:
struct Field {
uint8_t var;
uint64_t val_1;
uint16_t val_2;
};
从代码可读性来看,这是一个更好的选择:
struct cmp {
uint64_t count;
Field field;
};
我通过以下方式使用 cmp 结构:
使用参数化的 c'tor 初始化成员。 随着成员的增加,参数的数量增加,看起来很丑陋。
使用 cmp 结构作为 stl 数据容器的一部分。
嵌套结构会影响代码的优化
? 如果是,如何?使用它们会有什么更好的方法?
关键在这里:
从代码可读性来看,这是一个更好的选择。
这是您应该采取的选项。
事后进行剖析,并在必要时进行更改。虽然我非常怀疑。按原样,对象应具有相同的布局。
它不会影响性能。结构在内存中具有相同的布局,编译器确切地知道所有成员的偏移量,因为您没有使用指针。两者在性能方面没有区别
您可能需要考虑的一件事是填充和内存对齐。我不是 100% 确定 64 位 int 的存在会如何影响这一点,因此如果您通过 sizeof(cmp) 提供结构的大小,它将提供更多信息。如果你有一个cmp数组,它会有所作为。
此外,如前所述,以我的拙见,更具可读性的选项更好。
相关文章:
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 用C#中的并集模拟C++嵌套结构
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- Lambda 捕获、初始值设定项和嵌套结构
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 重载嵌套结构/类的流插入运算符
- C++将结构传递给函数以访问嵌套结构
- C++ 在外部使用嵌套结构实现类函数
- 嵌套结构,从由空行分隔的文件中读取数据
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 如何创建结构的结构结构,等等嵌套多个结构?
- 嵌套在联合中的结构嵌套在 C 中的结构中
- 受保护的嵌套结构不能用作派生外部类中的返回类型?
- C++中的嵌套结构
- 嵌套的模板结构构造函数实现
- 使用嵌套结构初始化并集
- C++ 中的嵌套结构函数
- C++中匿名类型的嵌套结构