从优化的角度来看,我需要对以下内容进行透视:
我的结构有一些字段:
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数据容器的一部分。
嵌套结构会影响代码的优化吗?如果是的话怎么样?
使用它们的更好方法是什么?
答案 0 :(得分:3)
关键在于:
从代码可读性来看,这是一个更好的选择。
这是您应该选择的选项。
之后配置文件,并在必要时进行更改。虽然我非常怀疑它。原样,对象应该具有相同的布局。
答案 1 :(得分:1)
它不会影响性能。结构在内存中具有相同的布局,并且编译器确切知道所有成员的偏移量,因为您没有使用指针。两者在性能方面没有区别
答案 2 :(得分:0)
您可能想要考虑的一件事是填充和内存对齐。我不是100%确定64位int的存在会如何影响这一点所以如果你提供了你的结构的大小,通过sizeof(cmp)它将提供更多的信息来使用。如果你有一个cmp数组,它会有所作为。
另外,如前所述,在我看来,更易读的选项更好。