0

我需要从优化的角度来了解以下内容:

我有一个包含一些字段的结构:

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 数据容器的一部分。

嵌套结构会影响代码优化吗?如果是的话怎么办?

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

4

3 回答 3

3

关键在这里:

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

这是您应该采取的选择。

之后配置文件,并在必要时进行更改。虽然我很怀疑。照原样,对象应该具有相同的布局。

于 2013-10-24T06:25:53.340 回答
1

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

于 2013-10-24T06:26:55.350 回答
0

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

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

于 2013-10-24T07:27:48.557 回答