私は正確に4つのブール値を私の構造体にcで格納する必要があります。はい、私は4つの整数を使うことも、配列に入れることもできますが、もっとうまくやりたいです。私は "0000"のような整数について考えていましたが、各数値はブール値を表しますが、編集時には1桁の数字しか編集できません。それdoesntのは、あなたがビットフィールド構造体を使用することができより多くのブール値を格納する最も効果的な方法
答えて
...どちらか任意のアイデアを
感謝を完璧に仕上げる:
struct foo {
unsigned boolean1 : 1;
unsigned boolean2 : 1;
unsigned boolean3 : 1;
unsigned boolean4 : 1;
};
あなたは、簡単に、たとえば、個別に各ブール値を編集することができます。
struct foo example;
example.boolean1 = 1;
example.boolean2 = 0;
ビットフィールドを使用して "0000"のようなintを使用すると、実際にはかなり規則的に行われます。はい、bit shiftingを使用して1つの値を編集できます。個人的には、構造体を変更することなく最大32の値(32ビットintを使用している場合)を拡張することができるので、ビットフィールド構造体にintを使用したいと思います。
struct _eMyBool
{
int m_iOne : 1;
int m_iTwo : 1;
int m_iThree : 1;
int m_iFour : 1;
} eMyBool;
しかしでも、それはboolean型を使用するための最も効率的な方法であると思ういけません。
これを処理するために生成された追加アセンブリコードは価格がかかります!
For example read this MSDN article
AFAIは、私は1ビットのalignementメンバーにアクセスするときbitshiftingためadditionnalコードのフットプリントは本当に重要であるので、得メモリの少なくとも7の比率があるはずだと思う覚えています。
MSDNの記事は面白いですが、OPの定義では、「最も効果的」とは「メモリを使いにくく使いやすい」という意味です。ここでのトレードオフは、メモリではなく、CPU命令のほんの一部です。 – houbysoft
私はあなたに同意する傾向がありますが、この価格は念頭に置いておく必要があります。おそらくこの記事ではないかもしれませんが、私は7の比率をはっきりと覚えています。私が非常に多くの記憶を得なければ、ビットフィールド法は本当に価格を持つかもしれないマイクロオプティマイゼーションです。ブール値の1つへのアクセスがアプリケーションをプロファイリングしている間に大いに反復する操作である場合、疑いなく私はビットフィールドを削除します。 –
あなたはこれらの何百万を保存している場合は、パックビットとしてそれを行います。
1秒間に何百万回もアクセスする必要がある場合は、int(またはshortsまたはchars)で指定します。
いずれにも該当しない場合は問題ありません。
両方の場合、パフォーマンスチューニングを行う必要があります。
- 1. Androidで文字列を格納する最も効果的な方法
- 2. SQL ServerデータベースにGUID値を格納する最も効率的な方法
- 3. 最も効果的なライブカウントダウンの方法
- 4. ブール値を格納する
- 5. アイテムのデータベースを格納、書き込み、および読み取りする最も効率的な方法。
- 6. アクセサリービューがオンになっているUITableViewの値を格納する最も効率的な方法
- 7. Marklogicデータベースに名前と値のペアを格納する最も効率的な方法
- 8. (StackOverflowのような)MySQLデータベースに投票データを格納する最も効率的な方法
- 9. domオブジェクトのonresizeをチェックする最も効果的な方法
- 10. jqueryフィールドの検証を行う最も効果的な方法
- 11. Javaオブジェクトに大きな16進数(md5)を格納する最も効率的な方法
- 12. データベースに未知数のレコードを格納する最も効率的な方法は何ですか?
- 13. Monotouchのスプライト(フレーム)アニメーションの最も効果的な方法
- 14. Mac/iPhoneでネットワーキングを行う最も効果的な方法は?
- 15. ExecutorServiceを使用して最も効果的な方法
- 16. NSArrayこれを行う最も効果的な方法:
- 17. ビットからなるブール値の配列への整数、C++で最も効率的な方法ですか?
- 18. ブール値の2つの配列を比較する最も効率的な方法は何ですか?
- 19. xmlファイルの値を探す最も効率的な方法は?
- 20. SQLCeデータベースにオブジェクトを格納する最も効率的な方法は何ですか?
- 21. Cocos2dのプレーヤーに続く最も簡単で効果的な方法
- 22. 最も効果的なクエリですか?
- 23. Mongoにネストされたカテゴリ(または階層データ)を格納する最も効率的な方法は?
- 24. 最も効果的なクリック数のカウント
- 25. 最も効率的な方法のハンドラ
- 26. 最も効果的な距離関数
- 27. リンクタグの値を格納する方法
- 28. 最も効果的な方法で2つのベクトルを比較する
- 29. jQueryで複数のdivを更新する最も効果的な方法
- 30. muti型フィールドを格納する最も良い方法
「有効」を定義します。最速を意味しますか?最小メモリ占有量?最小のコードフットプリント?最もエレガント? –
「最も効果的」とは何ですか?より少ないメモリを使い、素早く簡単に使用できますか? – schnaader
これを含めないと申し訳ありませんが、メモリの使用量が少なくて使いやすいことを意味します。 – tsusanka