bitmap alternatives and similar packages
Based on the "Algorithms and Data structures" category.
Alternatively, view bitmap alternatives based on common mentions on social networks and blogs.
-
matrex
A blazing fast matrix library for Elixir/Erlang with C implementation using CBLAS. -
simple_bayes
A Naive Bayes machine learning implementation in Elixir. -
exconstructor
An Elixir library for generating struct constructors that handle external data with ease. -
erlang-algorithms
Implementations of popular data structures and algorithms -
remodel
:necktie: An Elixir presenter package used to transform map structures. "ActiveModel::Serializer for Elixir" -
MapDiff
Calculates the difference between two (nested) maps, and returns a map representing the patch of changes. -
merkle_tree
:evergreen_tree: Merkle Tree implementation in pure Elixir -
aja
Extension of the Elixir standard library focused on data stuctures, data manipulation and performance -
DeepMerge
Deep (recursive) merge for maps, keywords and others in Elixir -
exmatrix
Elixir library implementing a parallel matrix multiplication algorithm and other utilities for working with matrices. Used for benchmarking computationally intensive concurrent code. -
the_fuzz
String metrics and phonetic algorithms for Elixir (e.g. Dice/Sorensen, Hamming, Jaccard, Jaro, Jaro-Winkler, Levenshtein, Metaphone, N-Gram, NYSIIS, Overlap, Ratcliff/Obershelp, Refined NYSIIS, Refined Soundex, Soundex, Weighted Levenshtein) -
ecto_materialized_path
Tree structure & hierarchy for ecto models -
dataframe
Package providing functionality similar to Python's Pandas or R's data.frame() -
Conrex
An Elixir implementation of the CONREC algorithm for topographic or isochrone maps. -
murmur
:speech_balloon: An implementation of the non-cryptographic hash Murmur3 -
Closure Table
Closure Table for Elixir - a simple solution for storing and manipulating complex hierarchies. It provides in-memory and Ecto adapters. -
paratize
Elixir library providing some handy parallel processing facilities that supports configuring number of workers and timeout.
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of bitmap or a related project?
Popular Comparisons
README
Bitmap
In computing, a bitmap is a mapping from some domain (for example, a range of integers) to bits, that is, values which are zero or one. It is also called a bit array or bitmap index.
This is an Elixir implementation of a bit array. Two implementations are provided as part of the library, Binary and Integer. Integers are the default due to clear performance superiority based on benchmarks provided below.
It is a fast space efficient data structure for lookups.
Note: Index is zero based in the implementation
Examples
iex> bitmap = Bitmap.new(5)
<<0::size(5)>> # 00000
iex> Bitmap.set(bitmap, 2)
<<4::size(5)>> # 00100
iex> bitmap |> Bitmap.set(2) |> Bitmap.set(3)
<<6::size(5)>> # 00110
iex> bitmap |> Bitmap.set(2) |> Bitmap.set(3) |> Bitmap.unset(2)
<<2::size(5)>> # 00010
Read the latest documentation here for elaborate description and more examples on how to use the library.
Benchmark using Benchfella
Results are based on sources present inside the bench/
directory.
Bitmaps of size 1,000,000 are used to get benchmark on performance of the two implementations provided in the library - Binary and Integer.
Benchmark Bitmap.Integer.at 100000000 0.05 µs/op
Benchmark Bitmap.Integer.unset_all 100000000 0.06 µs/op
Benchmark Bitmap.Integer.set? 100000000 0.07 µs/op
Benchmark Bitmap.Integer.new 10000000 0.11 µs/op
Benchmark Bitmap.Integer.set 500000 7.50 µs/op
Benchmark Bitmap.Integer.toggle 500000 7.52 µs/op
Benchmark Bitmap.Integer.toggle_all 100000 21.33 µs/op
Benchmark Bitmap.Integer.unset 100000 22.83 µs/op
Benchmark Bitmap.Binary.unset_all 50000 74.54 µs/op
Benchmark Bitmap.Binary.new 20000 79.34 µs/op
Benchmark Bitmap.Binary.set? 20000 90.18 µs/op
Benchmark Bitmap.Binary.at 20000 99.70 µs/op
Benchmark Bitmap.Binary.toggle 10000 169.97 µs/op
Benchmark Bitmap.Binary.unset 10000 207.38 µs/op
Benchmark Bitmap.Binary.set 10000 208.58 µs/op
Benchmark Bitmap.Integer.set_all 10 111083.80 µs/op
Benchmark Bitmap.Binary.set_all 10 143833.10 µs/op
Benchmark Bitmap.Binary.to_string 1 80530194.00 µs/op
Benchmark Bitmap.Integer.to_string 1 89035291.00 µs/op
Benchmark Bitmap.Binary.toggle_all 1 451542225.00 µs/op
License
This project is available under MIT License.
*Note that all licence references and agreements mentioned in the bitmap README section above
are relevant to that project's source code only.