BitArray 和 BitVector 32 结构有什么区别,BitVector 32 结构相对于 BitArray 有什么优势?为什么 BitVector 32 结构比 BitArray 更高效?
提前致谢。
杰...
BitArray 和 BitVector 32 结构有什么区别,BitVector 32 结构相对于 BitArray 有什么优势?为什么 BitVector 32 结构比 BitArray 更高效?
提前致谢。
杰...
对于内部使用的布尔值和小整数,BitVector32 比 BitArray 更有效。BitArray 可以根据需要无限增长,但它具有类实例所需的内存和性能开销。相比之下,BitVector32 仅使用 32 位。
http://msdn.microsoft.com/en-us/library/system.collections.specialized.bitvector32.aspx
BitVector32 是一个结构体,只占用 4 个字节。BitArray 是一个具有相关开销的类,因此效率较低 - BitArray 将需要至少 8 个字节,然后才能将任何对象添加到它,因为它位于堆上。更多关于栈和堆的信息在这里。
以下是Microsoft 的 BitVector32 文档所述:
BitVector32
比BitArray
内部使用的布尔值和小整数更有效。ABitArray
可以根据需要无限增长,但它具有类实例所需的内存和性能开销。相反,aBitVector32
只使用 32 位。
的容量BitVector32
限制为 32 位,即int
. 因此,索引和屏蔽可以是单个操作。将此与 734 位的位数组进行比较,您想了解是否设置了位 197。想想你将如何做到这一点(从类设计者的角度来看)。
ABitVector32
得到了提升,BitArray
因为它只是一个 32 位整数并且没有与类相关的开销(主要是内存开销)。
这意味着如果您需要存储超过 32 个布尔值,那么您将需要使用BitArray
或多个BitVector32
. 由于多个BitVector32
可能是繁琐的,您可能希望将它们放入一个数组或一个类中,这将消除性能提升。
简而言之,如果您需要存储 32 个或更少的布尔值,请使用BitVector32
. 如果您需要存储更多,然后在盲目选择之前评估您的需求和编码条件BitVector32
,否则您可能会为自己重新发明做更多的工作BitArray
而看不到任何性能优势。