BitArray 高性能 Or & And & Xor
BitArray high performance Or & And & Xor
这是用法示例:
bitarray = bitarray.And(mask);
问题是与 int[]
上的相同操作相比,复制到同一个数组但不创建另一个数组和 return 它的效率如何(花费时间和创建无用的垃圾)
我已经知道什么 BitArray 类型具有私有非 public 成员 m_array
,它只是 int[]
。
有没有一些方法可以在不创建新实例的情况下进行此操作?例如像这样:
bitarray.And(mask);
而且更简单,我想把这个操作加起来
bitarray |= mask;
而且我会知道在不创建 BitArray
.
的新实例的情况下,哪个实例 bitarray 在内部发生了变化
我知道,我可以通过反射来做到这一点,但我认为它不会更快...
还是有比创建我自己的 BitArray
更好的方法?
Is there some method to make this operations without creating new instances?
BitArray.And()
方法不会 return BitArray
的新实例。它只是 return 的 "current" 实例(即调用该方法时使用的实例)。
And I would know what instance bitarray changed inside without creating new instance of BitArray
在我看来,最直接的实现方法是简单地编写一个循环,将 bitarray
对象中的位值与 mask
对象中的位值进行比较 在你应用And()
方法之前。
请注意,要对这些信息做任何有趣的事情,您可能需要将其保存在某个数据结构中的某个地方。所以坦率地说,我认为避免为此目的创建新的 BitArray
对象没有多大优势。
与您自己的 int[] 实现相比效率如何?编写测试并找出答案。
BitArray 不是不可变的,它不会创建副本。它只是 returns 相同的实例。在我看来,您自己的实现并不能真正击败它。
这是用法示例:
bitarray = bitarray.And(mask);
问题是与 int[]
上的相同操作相比,复制到同一个数组但不创建另一个数组和 return 它的效率如何(花费时间和创建无用的垃圾)
我已经知道什么 BitArray 类型具有私有非 public 成员 m_array
,它只是 int[]
。
有没有一些方法可以在不创建新实例的情况下进行此操作?例如像这样:
bitarray.And(mask);
而且更简单,我想把这个操作加起来
bitarray |= mask;
而且我会知道在不创建 BitArray
.
我知道,我可以通过反射来做到这一点,但我认为它不会更快...
还是有比创建我自己的 BitArray
更好的方法?
Is there some method to make this operations without creating new instances?
BitArray.And()
方法不会 return BitArray
的新实例。它只是 return 的 "current" 实例(即调用该方法时使用的实例)。
And I would know what instance bitarray changed inside without creating new instance of
BitArray
在我看来,最直接的实现方法是简单地编写一个循环,将 bitarray
对象中的位值与 mask
对象中的位值进行比较 在你应用And()
方法之前。
请注意,要对这些信息做任何有趣的事情,您可能需要将其保存在某个数据结构中的某个地方。所以坦率地说,我认为避免为此目的创建新的 BitArray
对象没有多大优势。
与您自己的 int[] 实现相比效率如何?编写测试并找出答案。
BitArray 不是不可变的,它不会创建副本。它只是 returns 相同的实例。在我看来,您自己的实现并不能真正击败它。