我有10,000个长期值的清单
我想将该数据与其他100,000个长期值进行比较
比较是按位操作->
if (a&b==a) count++;
我可以使用哪种算法来获得最佳性能?
最佳答案
如果我正确理解了您的问题,则希望针对每个a
检查b
某些谓词是否正确。因此,您的问题的天真的解决方案如下:
var result = aList.Sum(a => bList.Count(b => (a & b) == a));
我不确定是否真的可以为任意谓词加速,因为您无法绕过每个
a
检查每个b
。您可以尝试并行运行查询:var result = aList.AsParallel().Sum(a => bList.Count(b => (a & b) == a));
例:
aList
:10,000个随机long
值; bList
:100,000个随机long
值。没有
AsParallel
:00:00:13.3945187与
AsParallel
:00:00:03.8190386关于c# - 在C#中以最快的速度在大型列表中进行按位运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10767673/