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