首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么BitVector 32结构比BitArray更有效?

为什么BitVector 32结构比BitArray更有效?
EN

Stack Overflow用户
提问于 2009-05-24 11:10:54
回答 3查看 16.8K关注 0票数 16

BitArray和BitVector 32结构有何不同? BitVector 32结构与BitArray相比有哪些优势?为什么BitVector 32结构比BitArray更有效?

提前谢谢。

杰伊。

EN

回答 3

Stack Overflow用户

发布于 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

票数 17
EN

Stack Overflow用户

发布于 2009-05-24 11:20:37

以下是Microsoft's documentation for BitVector32的陈述:

对于布尔值和内部使用的小整数,

BitVector32BitArray更有效。BitArray可以根据需要无限增长,但它具有类实例所需的内存和性能开销。相比之下,BitVector32仅使用32位。

BitVector32的容量限制为32位,相当于一个int的大小。因此,索引和掩码可以是单个操作。将其与具有734位的位数组进行比较,您希望确定是否设置了位197。想一想你会怎么做(从类设计器的角度)。

票数 8
EN

Stack Overflow用户

发布于 2013-02-14 04:14:02

BitArray相比,BitVector32具有更高的性能,因为它只是一个32位整数,并且没有与类相关的开销(主要是内存开销)。

这意味着如果您需要存储超过32个布尔值,那么您将需要使用BitArray或多个BitVector32。由于多个BitVector32可能是累加的,您可能希望将它们放入一个数组或一个类中,这将消除性能提升。

简而言之,如果您需要存储32个或更少的布尔值,则使用BitVector32。如果您需要存储更多内容,那么在盲目选择BitVector32之前需要评估您的需求和编码条件,否则您可能会在重新发明BitArray时为自己做更多的工作,而看不到任何性能好处。

注意:在大多数情况下,我更喜欢使用flagged enum而不是BitVectore32。有关解释和一些好的技巧,请参阅this question

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/903548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档