perf: benchmark hot path and reduce logger dispatch overhead - #133
Merged
Conversation
Publish an immutable copy-on-write strategy snapshot so normal and targeted dispatches avoid registry locking and per-call vector copies. Make logger state flags atomic and add a concurrent hot-path regression test without relaxing the existing formatter/backend execution mutex. Align benchmark setup and documentation with the prepared-record pipeline, pin spdlog 1.17.0, use Release CI builds, add the 32-producer case, and label sink-entry latency accurately.
Add a worker-side flush generation barrier for the spdlog async adapter and fail the workload when adapter.flush() returns before recorded sink completions. Use one explicit blocking queue capacity for both adapters and record it in CSV output. Add a focused spdlog flush regression executable and clarify the prepared-message contract and legacy fixture status in English and Russian benchmark documentation.
Build the spdlog flush barrier test into the benchmark output directory and run it in the Linux benchmark job so the worker-side drain contract is continuously exercised.
Build the dedicated spdlog flush barrier executable before running it in the benchmark workflow.
Reject zero comparative queue capacity instead of silently applying different LogIt++ and spdlog limits. Validate the latency CSV header before appending rows so legacy results cannot be mixed with the queue-capacity schema.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
enabledandsingle_modeatomic and add a concurrent hot-path regression test;adapter.flush();Validation
logit_bench_flush_testpassed with an async queue capacity of 8;The PR intentionally does not claim a public
LOGIT_INFO(...)benchmark or lock-elision for arbitrary custom backends. The legacy 2025 fixture is not presented as a current numeric comparison because its dependency/toolchain and async drain provenance were not recorded.