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:
There are a few examples of usage in the examples folder.