我们有一个 java 服务,它在一个巨大的二进制矩阵(10 000 x 10 000)上计算一些逻辑运算。该矩阵是位集数组。最重要的操作是给定位集和数组中每个位集之间的交集(逻辑与)。我们正在使用 OpenBitset,它显示了相当好的结果(至少比 java.util.BitSet 好)。数据稀疏性适中(可能连续有多个 0 或 1),位集大小是固定的。
对我们来说最重要的是快速响应时间(目前约为 0.05 秒),因此随着矩阵和请求数量的增长,我们希望找到进一步改进的方法。可能有一些代数方法或更快的库。
我们尝试使用javaewah,但与 OpenBitset 相比,该库执行的操作慢了 10 倍。项目页面上有一个比较,表明其他位集压缩库比 Java BitSet 慢。
你能提出一些其他的方法或新的想法吗?