我有一个 C++ 应用程序,其中包含许多带有手动控制位字段的结构,例如
#define FLAG1 0x0001
#define FLAG2 0x0002
#define FLAG3 0x0004
class MyClass
{
'
'
unsigned Flags;
int IsFlag1Set() { return Flags & FLAG1; }
void SetFlag1Set() { Flags |= FLAG1; }
void ResetFlag1() { Flags &= 0xffffffff ^ FLAG1; }
'
'
};
出于显而易见的原因,我想将其更改为使用位字段,例如
class MyClass
{
'
'
struct Flags
{
unsigned Flag1:1;
unsigned Flag2:1;
unsigned Flag3:1;
};
'
'
};
进行此切换时我担心的一个问题是,我在该站点上遇到了许多参考资料,说明了 C++ 中位字段的速度有多慢。我的假设是它们仍然比上面显示的手动代码更快,但是是否有任何硬参考材料涵盖在各种平台上使用位字段的速度影响,特别是 32 位和 64 位窗口。该应用程序处理内存中的大量数据,并且必须既快速又高效,这很可能是它最初以这种方式编写的原因。