morzhovets / momo

C++ template containers with optimized memory consumption
https://morzhovets.github.io/momo
MIT License
12 stars 2 forks source link
b-tree data-structures hash-container hash-map hash-table memory-pool optimization unordered-map

MSVC GCC Clang AppleClang IntelLLVM

momo (Memory Optimization is the Main Objective)

This project contains an implementation of the C++ containers, similar to the standard set/map and unordered_set/map, but much more efficient in memory usage. As for the operation speed, these containers are also better than the standard ones in most cases (benchmark of unordered containers, benchmark of ordered containers, benchmark sources).

Classes are designed in close conformity with the standard C++20 including exception safety guarantees. The compiler only needs to support C++11.

Deviations from the standard

The main ideas

Usage

This library is header-only and has zero dependencies. So you can just copy the folder include/momo into your source code.

Classes set/map and unordered_set/map are located in subfolder stdish, namespace momo::stdish.

Some documentation is here.

Other classes

DataTable

momo::DataTable is similar to Boost.MultiIndex, but its API looks like ADO.NET DataTable. Some examples are here.

Supported compilers