如何打包结构的成员以实现高效的跨平台代码



假设我有两个(无符号的短(16位值,我需要将它们存储在结构中。我应该将它们一起存储在单个 32 位整数中还是作为两个无符号短变量存储?

struct Foo {
unsigned CombinedValue;  // A
unsigned short Index;   //B
unsigned short Counter; //B
};

就代码生成而言,跨平台(x86、ARM、32/64 位(代码总体哪个更好?如果我存储两个 32 位整数,答案会是一样的吗?

最有意义的方式存储它们,让优化编译器做它擅长的事情。如果您需要固定宽度的 16 位类型,您还应该考虑使用 <cstdint> 类型,如 uint16_t ; unsigned short不保证始终为 16 位。

相关:https://softwareengineering.stackexchange.com/questions/80084/is-premature-optimization-really-the-root-of-all-evil

最新更新