Byy*_*yyo 11 c# boolean bitarray
我期待在这里找到一个关于这个的现有问题,但我没有.
Bitarray当你可以将bool值存储在一个时,使用a有什么好处bool[]?
System.Collections.BitArray biArray = new System.Collections.BitArray(8);
biArray[4] = true;
bool[] boArray = new bool[8];
boArray[4] = true;
Run Code Online (Sandbox Code Playgroud)
的bool[],因为存在更多的(扩展)方法以数组,而不是一个工作似乎有点更加得心应手给我BitArray
Kva*_*vam 12
有记忆/性能权衡.BitArray每个字节将存储8个条目,但访问单个条目需要一堆逻辑操作.bool数组将每个条目存储为一个字节,从而占用更多内存,但需要更少的CPU周期来访问.
本质上,BitArray是bool []的内存优化,但除非内存稀疏,否则使用它是没有意义的.
编辑:创建一个简单的性能测试.在我的机器上使用BitArray反转500M元素需要6秒:
const int limit = 500000000;
var bitarray = new BitArray(limit);
for (var i = 0; i < limit; ++i)
{
bitarray[i] = !bitarray[i];
}
Run Code Online (Sandbox Code Playgroud)
使用bool数组的相同测试大约需要1.5秒:
const int limit = 500000000;
var boolarray = new bool[limit];
for (var i = 0; i < limit; ++i)
{
boolarray[i] = !boolarray[i];
}
Run Code Online (Sandbox Code Playgroud)