BitMagic is C++ library developed and designed to implement efficient platform independent bitsets.
BitMagic is Open Source, free library. You can use this software in any commercial or non-commercial projects, free of any charge. Though we encorage you to let us know about your projects, and applications of BitMagic.
There is only one licensing limitation: if you use BitMagic Library -- please mention the authors and the library in any work derived from this project.
Why BitMagic Library?
Intended uses for bitset library:
1. STL companion. C++ Standard Template Library provides classes for bit storage and manipulations. It is a good start, but serious project ofter grows in its requirements. BitMagic implements container with dynamic resize, iterators, algorithms and serialization. Unlike STL, BitMagic library wants to invest into platform dependent optimizations to improve performance. Another good candidate would be Boost C++ Library and dynamic_bitset.
2. Tool for full text search systems and engines. Bit-sets are a popular format for storing inverted lists (one of the key indexing formats for search systems). Classic plain bit-sets often lose to inverted lists as inefficient. BitMagic library implements light-weight compression methods to switch between lists and bit-masks under the hood, while keeping programmer interface stable. BitMagic serialization automatically stores bit-vectors as compressed lists when it is beneficial.
3. Statistical computing, correlations and clustering. BitMagic library includes algorithms for binary distances (Humming, etc) and can be used in statistical computing when problem is formulated in binary spaces.
4. Non-SQL databases. There are a lot of database engines on the market offering non-SQL access. One example would be Berkeley DB. The fact that those engines does not offer SQL does not mean programmers have to abandome algebra of sets. BitMagic Library helps to implement sets algebra and make non-SQL database functionally powerful (and fast).
5. Non-standard extensions for industrial RDBMS. Modern industrial database systems (like Oracle) often offer APIs and services and frameworks for extensibility: external procedures, extensible indexing, query optimization can be used to build powerful, reusable server-based components. BitMagic library can be used for building custom indexes to handle geo-spatial, bio-chemical and other data often stored in BLOBs and unavailable for traditional RDBMS based indexing.
6. Algorithms for near-realtime network and cluster management. Bit-sets can be used to create very efficient in-memory indexes and structures to store millions state machines for network management or task-resource tracking in distributed computing cluster.
Here are some key features of "BitMagic":
· Several types of on the fly adaptive compression.
· Dynamic range of addressable space of 232-1 bits.
· Efficient memory management.
· Cache optimized bitset distance algorithms.
· Serialization in platform independent, compact format suitable for storing in files and databases.
· Performance tuning for 32-bit and 64-bit systems.
· Optimization for SSE2 128-bit integer SIMD.
· Optimization for SSE4.2 128-bit integer SIMD and application extensions
What's New in This Release: [ read full changelog ]
· Sigficantly improved performance of deserialization