手動で制御されたビットフィールドを持つ多くの構造体を含む 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 ビット ウィンドウでビット フィールドを使用することによる速度への影響をカバーするハード リファレンス資料はありますか。アプリケーションはメモリ内の膨大な量のデータを処理し、高速でメモリ効率が高い必要があります。これが、最初にこのように記述された理由である可能性があります。