2

巨大なバイナリ マトリックス (10 000 x 10 000) でいくつかの論理演算を計算する Java サービスがあります。この行列は、ビットセットの配列です。最も重要な操作は、特定のビットセットと配列内の各ビットセットの間の交差 (論理 AND) です。私たちは 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 に答える