Ответ 1
У меня есть отдельная простая библиотека C, которая может быть полезной: https://github.com/jvirkki/libbloom
Этот вопрос задан ранее, но в тот момент ответа не было, поэтому я решил снова спросить его.
Мне нужна эффективная реализация фильтра Bloom в C (а не С++). Если такой вещи нет, я бы не пропустил ее, если бы получил хорошую ссылку, чтобы она не занимала слишком много времени.
Я хочу использовать эту структуру данных для вставок и тестов в соотношении (1: 20k), поэтому в первую очередь это требует интенсивного тестирования. Тестируемые данные - это 64-битные целые числа.
У меня есть отдельная простая библиотека C, которая может быть полезной: https://github.com/jvirkki/libbloom
Не делать слишком много саморекламы, но я написал плагин для Geany editor/IDE, который отфильтровывает повторяющиеся текстовые строки, он использует фильтр Bloom.
Реализация находится на C, и вы можете найти ее прямо здесь, на GitHub. Это GPL v3, поэтому в зависимости от ваших точных потребностей вы можете или не сможете его использовать.
Некоторые заметки о моей реализации:
BloomContains
callback, используемый bloom_filter_new()
). Просто передайте NULL
, чтобы получить "чистый" фильтр.Он не был сильно настроен на производительность, но должен быть в порядке. Я был бы признателен за любые отзывы, которые могут возникнуть после тестирования, конечно!
У Chromium есть один в С++
Я знаю, что это старый вопрос, но для справки, вот некоторые результаты поиска github.
Простой поиск по github для 'bloomfilter' дает тонну результатов (для C):
https://github.com/search?q=extension%3Ac+bloomfilter&type=Code&ref=searchresults
Это только для ССЫЛКИ.