BitArray和BitVector 32结构有什么区别,BitVector 32结构比BitArray有什么优势?为什么BitVector 32结构比BitArray更高效?为什么BitVector 32结构比BitArray更高效?
在此先感谢。
周杰伦...
BitArray和BitVector 32结构有什么区别,BitVector 32结构比BitArray有什么优势?为什么BitVector 32结构比BitArray更高效?为什么BitVector 32结构比BitArray更高效?
在此先感谢。
周杰伦...
这里是Microsoft's documentation for BitVector32状态:
BitVector32
比BitArray
对于在内部使用的布尔值和小整数更有效率。 ABitArray
可以根据需要无限增长,但它具有类实例所需的内存和性能开销。相反,BitVector32
只使用32位。
BitVector32
的容量限于32位,大小为int
。因此,索引和屏蔽可以是单个操作。将此与734位的位数进行比较,您想知道是否设置了位197。想想你会怎么做(从班级设计师的角度来看)。
对于内部使用的布尔值和小整数,BitVector32比BitArray更有效。 BitArray可以根据需要无限增长,但它具有类实例所需的内存和性能开销。相比之下,BitVector32只使用32位。
http://msdn.microsoft.com/en-us/library/system.collections.specialized.bitvector32.aspx
BitVector32是一个结构,仅消耗4个字节。 BitArray是一个具有与其关联的开销的类,因此效率较低 - 在它添加任何对象到它之前,BitArray将需要至少8个字节,因为它位于堆上。 More about the stack and heap here。
A BitVector32
得到它在BitArray
提升,因为它只是一个32位整数,并没有与类(主要是内存开销)相关的开销。
这意味着如果您需要存储多于32个布尔值,那么您将需要使用BitArray
或多个BitVector32
。由于多个BitVector32
可能很繁琐,所以您可能希望将它们放入数组或类中,这会消除性能提升。
总之,如果你需要存储32或更少的布尔值,然后使用BitVector32
。如果您需要存储更多,然后盲目挑选BitVector32
之前评估您的需求和编码条件,否则您可能会为自己重新创建BitArray
做更多的工作,而没有看到任何性能优势。
注意:在大多数情况下,我更喜欢使用flagged enum而不是BitVectore32
。请参阅this question以获得解释和一些好的技巧。
但是在BitVector32中我们也创建了这种类型的实例。 BitVector32 newVector = new BitVector32(4); //喜欢这个。 – 2009-05-24 11:27:16