我正在开发用于数据索引的字对齐位图压缩算法。算法基于 WAH 压缩研究论文。压缩位图在按位操作上表现良好,并且非常节省空间。但是修改压缩位图效率不是很高,因为修改需要拆分压缩字大小块和几个 memmove 导致性能瓶颈。
请看下面的例子。
示例:数据集 - [1000000,34,9,23456,6543,10000000,23440004,100,345]
由于数据集的随机性,性能会降低,在实际应用场景中可能会发生这种情况。
- 谁能给我一个关于如何克服这个性能问题的提示?
我正在开发用于数据索引的字对齐位图压缩算法。算法基于 WAH 压缩研究论文。压缩位图在按位操作上表现良好,并且非常节省空间。但是修改压缩位图效率不是很高,因为修改需要拆分压缩字大小块和几个 memmove 导致性能瓶颈。
请看下面的例子。
示例:数据集 - [1000000,34,9,23456,6543,10000000,23440004,100,345]
由于数据集的随机性,性能会降低,在实际应用场景中可能会发生这种情况。
Daniel Lemire 有几篇关于预排序以提高压缩和性能的论文。这是最新的: http: //arxiv.org/abs/1207.2189
你也可以看看他的 EWah 变体。
普遍的感觉是,当数据集变化缓慢时,位图数组压缩技术效果很好,因为大多数实现会丢弃并在每次更改时重建索引。对于变化更频繁的数据集,传统的索引方法(例如 B-Tree 变体)仍然是王道。
实现:https ://github.com/lemire/javaewah和https://github.com/lemire/EWAHBoolArray