繁体   English   中英

C#对大块位进行按位运算的最快方法

[英]c# fastest way to do bitwise operations on large block of bits

我有一组成千上万个标志01的数组。

我正在使用BitArray类来做类似的事情:

result = (BitArray)ab.Clone();
result.And(bc);

很多很多次

当然,我必须首先在Bitarray设置标志。

for (int i = 1; i < maxLen; i++) ab[i] = a[i] < b[i];

但是,当我设置的标志一次,然后我做成千上万的操作andorxornot他们(这样的位操作的速度要重要得多)

从头开始。

我问你是否在C#中更快的方法呢?

假设不选择GPU,那么最好的选择是在支持SIMD操作的CPU上使用Vector<byte> System.Runtime.CompilerServices.Unsafe中有一些方法允许您从不安全的指针(特别是Unsafe.Read<Vector<byte>> )中加载Vector<T> ,从而可以非常有效地将其用于通过固定的数组fixed 或者:等到Span<T>成为主流,然后使用NonPortableCast<byte, Vector<byte>>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM