Skip to content

Commit

Permalink
Add benchmark for log crate proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
SpriteOvO committed Mar 9, 2025
1 parent 5a22c32 commit 68735db
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 14 deletions.
7 changes: 6 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,12 @@ jobs:
- name: Restore cargo caches
uses: Swatinem/rust-cache@v2
- name: Run benchmark
run: cargo +nightly bench --features "multi-thread,runtime-pattern,serde_json" --bench spdlog_rs --bench spdlog_rs_pattern | tee bench-results.txt
run: |
cargo +nightly bench --features "multi-thread,runtime-pattern,serde_json,log" \
--bench spdlog_rs \
--bench spdlog_rs_pattern \
--bench spdlog_rs_log_crate_proxy \
| tee bench-results.txt
- name: Discard irrelevant changes
run: git checkout -- spdlog/Cargo.toml
- name: Process results
Expand Down
38 changes: 25 additions & 13 deletions spdlog/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,21 @@ all-features = true
name = "spdlog"

[features]
level-off = []
level-off = []
level-critical = []
level-error = []
level-warn = []
level-info = []
level-debug = []
level-trace = []
level-error = []
level-warn = []
level-info = []
level-debug = []
level-trace = []

release-level-off = []
release-level-off = []
release-level-critical = []
release-level-error = []
release-level-warn = []
release-level-info = []
release-level-debug = []
release-level-trace = []
release-level-error = []
release-level-warn = []
release-level-info = []
release-level-debug = []
release-level-trace = []

source-location = []
native = []
Expand Down Expand Up @@ -59,7 +59,15 @@ spin = "0.9.8"
thiserror = "1.0.37"

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.9", features = ["consoleapi", "debugapi", "handleapi", "processenv", "processthreadsapi", "winbase", "wincon"] }
winapi = { version = "0.3.9", features = [
"consoleapi",
"debugapi",
"handleapi",
"processenv",
"processthreadsapi",
"winbase",
"wincon",
] }

[target.'cfg(unix)'.dependencies]
libc = "0.2"
Expand Down Expand Up @@ -111,6 +119,10 @@ name = "spdlog_rs_pattern"
path = "benches/spdlog-rs/pattern.rs"
required-features = ["runtime-pattern", "serde_json"]
[[bench]]
name = "spdlog_rs_log_crate_proxy"
path = "benches/spdlog-rs/log_crate_proxy.rs"
required-features = ["log"]
[[bench]]
name = "fast_log"
path = "benches/fast_log/main.rs"
harness = false
Expand Down
50 changes: 50 additions & 0 deletions spdlog/benches/spdlog-rs/log_crate_proxy.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#![feature(test)]

extern crate test;

#[path = "../common/mod.rs"]
mod common;

use std::sync::Arc;

use spdlog::sink::*;
use test::Bencher;

include!(concat!(
env!("OUT_DIR"),
"/test_utils/common_for_integration_test.rs"
));
use test_utils::*;

fn init(filename: &str) {
let sink: Arc<dyn Sink> = Arc::new(
FileSink::builder()
.path(common::BENCH_LOGS_PATH.join(filename))
.truncate(true)
.build()
.unwrap(),
);
sink.set_error_handler(Some(|err| panic!("an error occurred: {err}")));

let logger = Arc::new(build_test_logger(|b| {
b.error_handler(|err| panic!("an error occurred: {err}"))
.sink(sink)
}));

spdlog::set_default_logger(logger);
_ = spdlog::init_log_crate_proxy();

log::set_max_level(log::LevelFilter::max());
}

#[bench]
fn bench_log_crate_proxy(bencher: &mut Bencher) {
init("log_crate_proxy.log");
bencher.iter(|| log::info!(bench_log_message!()))
}

#[bench]
fn bench_log_crate_proxy_kv(bencher: &mut Bencher) {
init("log_crate_proxy_kv.log");
bencher.iter(|| log::info!(key1 = 42, key2 = true; bench_log_message!()))
}

0 comments on commit 68735db

Please sign in to comment.