この質問は以前にもありましたが、その時点では答えがなかったので、もう一度質問することにしました。
C (C++ ではない) でブルーム フィルターを効率的に実装する必要があります。そのようなものが利用できない場合は、時間がかかりすぎないように良い参照があれば、実装してもかまいません。
このデータ構造を挿入とテストに比率 (1:20k) で使用したいので、主にテスト集約的です。テストするデータは 64 ビット整数です。
この質問は以前にもありましたが、その時点では答えがなかったので、もう一度質問することにしました。
C (C++ ではない) でブルーム フィルターを効率的に実装する必要があります。そのようなものが利用できない場合は、時間がかかりすぎないように良い参照があれば、実装してもかまいません。
このデータ構造を挿入とテストに比率 (1:20k) で使用したいので、主にテスト集約的です。テストするデータは 64 ビット整数です。
ここにスタンドアロンのプレーン C ライブラリがあります。これは役に立つかもしれません: https://github.com/jvirkki/libbloom
自己宣伝はあまりしませんが、重複するテキスト行を除外するGeanyエディター/IDE用のプラグインを作成しました。これはブルームフィルターを使用します。
実装はCであり、ここGitHubで見つけることができます。これはGPLv3であるため、正確なニーズに応じて、使用できる場合とできない場合があります。
私の実装に関するいくつかのメモ:
BloomContains
使用されるコールバック関数ポインターを参照bloom_filter_new()
)。NULL
「純粋な」フィルターを取得するには、パスするだけです。パフォーマンスについてはあまり調整されていませんが、問題はないはずです。もちろん、テスト後にフィードバックをいただければ幸いです。
Chromium には C++ の 1 つがあります。