我有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/

10-09 21:20