TGViewer
C++ - Reddit C++ - Reddit @r_cpp · 230 subscribers
Post #25267 14
detailed output from a single area.

### Performance

Nova has been benchmarked against several popular C++ logging libraries, including Quill and spdlog, using:

* multiple thread counts
* fixed queue sizes
* sustained throughput scenarios
* guaranteed-delivery latency tests
* both real file sinks and counting sinks to isolate I/O overhead

The benchmarks intentionally normalize queue sizing and backend threading models to avoid structurally advantaging any particular library configuration.

Results varied by workload, but several patterns consistently emerged:

* Nova performed particularly well in guaranteed-delivery scenarios and bounded-memory configurations
* Nova's synchronized sink significantly outperformed comparable synchronous configurations from other libraries
* Nova's async backend (using a no-I/O counting sink) demonstrated competitive throughput across thread counts while maintaining zero per-record heap allocation throughout
* Quill achieved extremely high front-end enqueue throughput, but with substantial drop rates under sustained overload conditions
* spdlog async showed performance degradation under heavy multi-threaded workloads

While Nova does not always achieve the highest theoretical front-end enqueue rate, it performed extremely competitively across a broad range of realistic workloads, especially where deterministic behavior and bounded memory usage are important.

Full benchmark methodology and raw benchmark data are available in the repository.

### Design Philosophy

| Principle | Description |
|---|---|
| Domain-based routing | Logging should reflect application structure rather than forcing subsystems into global severity categories |
| Deterministic behavior | No heap allocation, exceptions, or RTTI by design - heap usage is explicitly documented where it exists (such as in a small number of convenience sinks) and avoided everywhere else across Nova core, Nova Extras, and Flare |
| Explicit tradeoffs | Buffer and queue sizes, synchronous vs asynchronous delivery, blocking, and fan-out behavior should be visible and configurable |
| Compile-time configuration | Logging configuration should be resolved at compile time whenever practical |
| Production-oriented design | Optimize for sustained, realistic workloads and operational predictability |
| Modern C++ | Use modern language features without introducing unnecessary complexity or heavy dependencies |
| Performance-conscious design | Logging overhead should remain predictable and low, especially in latency-sensitive and multi-threaded systems |

### Current Status & Feedback

The initial release is now available at the repository linked above. I am still actively working on improving the library with additional features such as:

* additional sinks/backends
* packaging and integration polish
* binary logging

I would appreciate feedback on any aspects of Nova (e.g. integration experience, cross-platform/compiler issues, feature requests). If you try Nova in a project, I’d love to hear how it performs and where it can improve.

Thanks for reading.

https://redd.it/1tm0ihy
@r_cpp
Reddit From the cpp community on Reddit: Domain-Based C++ Logging With Nova Explore this post and more from the cpp community
More from @r_cpp
  1. Sep 29, 2026Boost.Graph 1.95 will be C++17 Dear Boost.Graph community, In two release cycles (Boost re…
  2. Sep 26, 2026Token Sequence Injection & Modern Macros: The Most Game-Changing Compile-Time Feature in C…
  3. Sep 25, 2026myStringStream.str("") Considered Harmful Under C++20 I was recently looking at some (rath…
  4. Sep 20, 2026A clever branch free optimization I'm the developer of memlz which is an extremely fast co…
  5. Sep 15, 2026Inside Boost.PolyCollection https://bannalia.blogspot.com/2026/09/inside-boostpolycollecti…
  6. Sep 11, 2026C++26: Standard Library Hardening Experiments https://www.cppstories.com/2026/hardening-ex…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →