私は正確に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. 多くのデータフレームを格納するRメモリ効率的な方法?
- 5. 最も効果的なライブカウントダウンの方法
- 6. Swift 3:多くの文字列を多くの正規表現でチェックする最も効果的な方法
- 7. ブール値を格納する
- 8. アイテムのデータベースを格納、書き込み、および読み取りする最も効率的な方法。
- 9. アクセサリービューがオンになっているUITableViewの値を格納する最も効率的な方法
- 10. MySQL:MySQLに一年(365要素)を格納する最も効果的な方法は何ですか?
- 11. より多くのオブジェクトをHashMapにintの範囲よりも格納する
- 12. (StackOverflowのような)MySQLデータベースに投票データを格納する最も効率的な方法
- 13. Marklogicデータベースに名前と値のペアを格納する最も効率的な方法
- 14. Javascript:20,000の数値を格納してチェックする最も効率的な方法は?
- 15. domオブジェクトのonresizeをチェックする最も効果的な方法
- 16. matplotlibで多くの図を生成する最も効率的な方法
- 17. Java/Android - 多くの変数を保存する最も効率的な方法
- 18. オブジェクトの静的リストを格納する最も効率的な方法は何ですか?
- 19. Neo4jの結果を得る最も効率的な方法
- 20. 次のSQLクエリを書くより効果的な方法
- 21. 最も効率的なページヒットを生成する最も効率的な方法
- 22. jqueryフィールドの検証を行う最も効果的な方法
- 23. Javaオブジェクトに大きな16進数(md5)を格納する最も効率的な方法
- 24. 多数の文字列をマップに格納する最もメモリ効率の良い方法は何ですか?
- 25. データベースに未知数のレコードを格納する最も効率的な方法は何ですか?
- 26. 多くのIP範囲を格納するPHPの最良の方法は?
- 27. Monotouchのスプライト(フレーム)アニメーションの最も効果的な方法
- 28. バリアント関数のテンプレート引数をユニオンベクトルに格納する最も効率的な方法は?
- 29. Mac/iPhoneでネットワーキングを行う最も効果的な方法は?
- 30. NSArrayこれを行う最も効果的な方法:
「有効」を定義します。最速を意味しますか?最小メモリ占有量?最小のコードフットプリント?最もエレガント? –
「最も効果的」とは何ですか?より少ないメモリを使い、素早く簡単に使用できますか? – schnaader
これを含めないと申し訳ありませんが、メモリの使用量が少なくて使いやすいことを意味します。 – tsusanka