gpt4 book ai didi

c++ - C++ 中的位字段有多慢

转载 作者:可可西里 更新时间:2023-11-01 15:16:28 24 4
gpt4 key购买 nike

我有一个 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 位窗口)上使用位字段的速度影响。应用程序处理内存中的大量数据,必须速度快且内存效率高,这很可能就是最初以这种方式编写的原因。

最佳答案

这两个示例在速度上应该非常相似,因为在这两种情况下,编译器最终必须发出几乎相同的位掩码指令。要知道哪个才是真正最好的,请进行一些简单的实验。但是,如果结果不确定,请不要感到惊讶;这就是我的预测......

虽然你最好说位域是 bool 类型。

关于c++ - C++ 中的位字段有多慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com