2011-05-30 6 views
0

プログラムのストレージ最適化に関する質問があります。より多くのストレージスペースを消費するもの - boost :: dynamic_bitset <>またはraw storage?

私が持っている、に保存されている4096「ノット」と言ってみましょう:私は今、私のプログラムをリファクタリングしてboolが含まれていますCKnotクラスを構築検討しています

boost::dynamic_bitset<> 

を。

質問は、より多くのスペースを消費しますものです:

  • ブースト:: dynamic_bitset <>(4096、false)を;
  • CKnotノット含有//【4096】一BOOL

おかげ

+1

その違いはあまりありません。静的配列メソッドはメモリの1ページに収まるので高速になります! – sep

+0

私は結び目の数を4096(= 2^12)から2^30に増やすことになります。これが私の最終目標です。彼らはそれを変えるだろうか?それともまだですか? – Eagle

答えて

6

ビット集合は、各ビットに対し、サイズが少なくともバイトである必要があり、C++でBOOLとして、かなり小さくなりビットセットはちょうどそのビットです。

+0

実際、C++のboolは整数と同じサイズです。サイズを小さくするには、ビットフィールドを使用する必要があります。ビットフィールドは個々のメンバーを単一のビットに切り捨てることができますが、それらを含むオブジェクトは少なくとも1バイトでなければなりません。 –

+0

@Jan sizeof(bool)は実装定義です - C++標準5.3.3を参照してください。これは整数型ですが、それは整数ではなく、int型と同じサイズでなければなりません。 –

関連する問題