Giter Club home page Giter Club logo

bloomf's Introduction

Bloomf - Efficient Bloom filters for OCaml OCaml-CI Build Status

Bloom filters are memory and time efficient data structures allowing probabilistic membership queries in a set.

A query negative result ensures that the element is not present in the set, while a positive result might be a false positive, i.e. the element might not be present and the BF membership query can return true anyway.

Internal parameters of the BF allow to control its false positive rate depending on the expected number of elements in it.

Online documentation is available here.

Install

The latest version of bloomf is available on opam with opam install bloomf.

Alternatively, you can build from sources with make or dune build.

Tests

Some of the tests, measuring false positive rate or size estimation, might fail once in a while since they are randomized. They are thus removed from dune runtest alias.

To run the whole test suite, run dune build @runtest-rand instead.

Benchmarks

Micro benchmarks are provided for create, add, mem and size_estimate operations. Expected error rate is 0.01.

They preform OLS regression analysis using the development version of bechamel. To reproduce them, pin bechamel then run dune build @bench.

bloomf's People

Contributors

bobot avatar craigfe avatar pascutto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bloomf's Issues

Unable to derive serializers

I'm currently working on a project where I would like to serialize and de-serialize instances of Bloomf.t to and from disk.
Because the main type is abstract over an input type and the actual implementation is not exposed, I don't have access from external code to implement {de,}serializers.
One very simple solution to this would be to simply expose priv.
Shortly, I'll be opening a PR that does just this (though it also renames priv to impl since it is no longer private).
This is not 100% ideal, as it leaves up to the consumer to reconstruct the abstracted type from context,
but I'm not yet skilled enough to come up with a better solution in a vacuum.
Do you all have thoughts on how one might implement fully type-safe serialization support here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.