以下是使用情况的检查:
bitarray = bitarray.And(mask);
问题是它与int[]
上的相同操作相比有多高效,复制到同一个数组但没有创建另一个并返回它(花费时间和创建无用的垃圾)
我已经知道BitArray类型有私人非公开成员m_array
,它只是int[]
。
是否有一些方法可以在不创建新实例的情况下进行此操作?例如:
bitarray.And(mask);
更简单,我想加快这个操作
bitarray |= mask;
我会知道在不创建BitArray
的新实例的情况下,bitarray实例发生了什么变化。
我知道,我可以用反思做到这一点,但我不认为它会更快......
还是有一些比创建我自己的BitArray
更好的方法?
答案 0 :(得分:0)
是否有一些方法可以在不创建新实例的情况下进行此操作?
BitArray.And()
方法不会返回BitArray
的新实例。它只返回“当前”实例(即调用方法时使用的实例)。
我会知道在没有创建
的新实例的情况下,bitarray实例发生了什么变化BitArray
在我看来,最直接的方法是简单地编写一个循环,将bitarray
对象中的位值与mask
对象中的位值进行比较在之前应用And()
方法。
请注意,要对此信息执行任何有趣的操作,您可能需要将其保存在某处的某些数据结构中。坦率地说,我没有看到避免为此目的创建新的BitArray
对象的优势。
答案 1 :(得分:0)
与您自己的int []实现相比效率如何?写测试并找出答案。
BitArray不是不可变的,它不会创建副本。它只返回相同的实例。在我看来,你自己的实现不会真正击败它。