2

我们有一个 java 服务,它在一个巨大的二进制矩阵(10 000 x 10 000)上计算一些逻辑运算。该矩阵是位集数组。最重要的操作是给定位集和数组中每个位集之间的交集(逻辑与)。我们正在使用 OpenBitset,它显示了相当好的结果(至少比 java.util.BitSet 好)。数据稀疏性适中(可能连续有多个 0 或 1),位集大小是固定的。

对我们来说最重要的是快速响应时间(目前约为 0.05 秒),因此随着矩阵和请求数量的增长,我们希望找到进一步改进的方法。可能有一些代数方法或更快的库。

我们尝试使用javaewah,但与 OpenBitset 相比,该库执行的操作慢了 10 倍。项目页面上有一个比较,表明其他位集压缩库比 Java BitSet 慢。

你能提出一些其他的方法或新的想法吗?

4

2 回答 2

1

在我最近的博客中,我讨论了一个“又一个”位集实现——带有源代码。也许您想尝试一下:http ://www.censhare.com/en/aktuelles/censhare-labs/yet-another-compressed-bitset

于 2012-12-06T12:22:01.180 回答
0

如果您不介意使用客户端-服务器解决方案,pilosa将非常适合您的用例。

  • java,python,go的绑定
  • 分组支持
  • 时间范围支持
  • 巨大的矩阵支持
  • 使用高性能的roaringbitmap
  • 水平缩放
  • 舵图https://github.com/pilosa/helm
于 2019-09-23T08:42:58.207 回答