嵌套结构

时间:2013-10-24 06:22:17

标签: c++

从优化的角度来看,我需要对以下内容进行透视:

我的结构有一些字段:

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

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

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

3 个答案:

答案 0 :(得分:3)

关键在于:

  

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

这是您应该选择的选项。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

另外,如前所述,在我看来,更易读的选项更好。