我们有一个java服务,可以在巨大的二进制矩阵(10 000 x 10 000)上计算一些逻辑运算。该矩阵是位集阵列。最重要的操作是给定位集与阵列中每个位集之间的交集(逻辑AND)。我们正在使用OpenBitset,它显示了非常好的结果(至少比java.util.BitSet更好)。数据稀疏度适中(可能连续多个0或1),bitset大小是固定的。
对我们来说最重要的是快速响应时间(目前约为0.05秒),因此随着矩阵和请求数量的增加,我们希望找到进一步改进的方法。可能有一些代数方法或更快的库。
我们尝试使用javaewah,但与OpenBitset相比,此库执行的操作慢了10倍。项目页面上有比较,表明其他bitset-compression库比Java BitSet慢。
你能否提出一些其他方法或新想法?
答案 0 :(得分:1)
在我最近的博客中,我讨论了一个“又一个”bitset实现 - 包含源代码。也许你想尝试一下:http://www.censhare.com/en/aktuelles/censhare-labs/yet-another-compressed-bitset
答案 1 :(得分:0)
如果您不介意使用客户端服务器解决方案,pilosa将非常适合您的用例。