嵌套结构

Nested strcuture

本文关键字:结构 嵌套      更新时间:2023-10-16

我需要从优化的角度看待以下内容:

我有一个带有一些字段的结构:

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 结构:

  1. 使用参数化的 c'tor 初始化成员。 随着成员的增加,参数的数量增加,看起来很丑陋。

  2. 使用 cmp 结构作为 stl 数据容器的一部分。

嵌套结构会影响代码的优化

? 如果是,如何?

使用它们会有什么更好的方法?

关键在这里:

从代码可读性来看,这是一个更好的选择。

这是您应该采取的选项。

事后进行剖析,并在必要时进行更改。虽然我非常怀疑。按原样,对象应具有相同的布局。

它不会影响性能。结构在内存中具有相同的布局,编译器确切地知道所有成员的偏移量,因为您没有使用指针。两者在性能方面没有区别

您可能需要考虑的一件事是填充和内存对齐。我不是 100% 确定 64 位 int 的存在会如何影响这一点,因此如果您通过 sizeof(cmp) 提供结构的大小,它将提供更多信息。如果你有一个cmp数组,它会有所作为。

此外,如前所述,以我的拙见,更具可读性的选项更好。