Skip to content

steinwurf/abacus

Repository files navigation

Abacus

Linux make-specs Windows make-specs MacOS make-specs Linux CMake Windows CMake MacOS CMake Raspberry Pi Valgrind No Assertions Clang Format Cppcheck

image

Abacus is a C++ metrics library. We wanted to create a library that allows us to create counters in our other libraries that:

  • Are fast to increment/update
  • Are fast to copy/transfer between dependencies
  • Can separate hot and cold memory
  • Can keep everything in one contiguous memory block

With this, you can create metrics for a library that can be carried through dependencies all the way to the top-level application like so:

+---------------+                             +---------------+
|    Library    |          Dependency         |    Library    |
|       1       |            ----->           |       0       |
+-------+-------+                             +-------+-------+
        |                                             |
        |                                             |
        |  Library specific metrics                   |  Library specific
        |                                             |      metrics
        v                                             v
+-------+-------+                             +-------+-------+
|               |                             |               |
|    Metrics    | Library 0 inherits metrics  |    Metrics    |
|       1       +---------------------------> |     0 + 1     |
+---------------+                             +---------------+

Table of Contents:

Examples / Usage

There are a few examples of usage in the examples folder.