BitArray和BitVector 32结构有何不同? BitVector 32结构与BitArray相比有哪些优势?为什么BitVector 32结构比BitArray更有效?
提前谢谢。
杰伊。
发布于 2009-05-24 11:27:20
对于布尔值和内部使用的小整数,
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。
发布于 2009-05-24 11:20:37
以下是Microsoft's documentation for BitVector32的陈述:
对于布尔值和内部使用的小整数,
BitVector32比BitArray更有效。BitArray可以根据需要无限增长,但它具有类实例所需的内存和性能开销。相比之下,BitVector32仅使用32位。
BitVector32的容量限制为32位,相当于一个int的大小。因此,索引和掩码可以是单个操作。将其与具有734位的位数组进行比较,您希望确定是否设置了位197。想一想你会怎么做(从类设计器的角度)。
发布于 2013-02-14 04:14:02
与BitArray相比,BitVector32具有更高的性能,因为它只是一个32位整数,并且没有与类相关的开销(主要是内存开销)。
这意味着如果您需要存储超过32个布尔值,那么您将需要使用BitArray或多个BitVector32。由于多个BitVector32可能是累加的,您可能希望将它们放入一个数组或一个类中,这将消除性能提升。
简而言之,如果您需要存储32个或更少的布尔值,则使用BitVector32。如果您需要存储更多内容,那么在盲目选择BitVector32之前需要评估您的需求和编码条件,否则您可能会在重新发明BitArray时为自己做更多的工作,而看不到任何性能好处。
注意:在大多数情况下,我更喜欢使用flagged enum而不是BitVectore32。有关解释和一些好的技巧,请参阅this question。
https://stackoverflow.com/questions/903548
复制相似问题