From bc56458359d1eac8054c4b106095c0dda835ad2b Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Wed, 7 Aug 2024 19:48:56 +0000 Subject: [PATCH 1/2] Add benchmarks for measuring cost of Logger, Provider creation --- opentelemetry-sdk/benches/log.rs | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/opentelemetry-sdk/benches/log.rs b/opentelemetry-sdk/benches/log.rs index 189f3de1ff..695d589c15 100644 --- a/opentelemetry-sdk/benches/log.rs +++ b/opentelemetry-sdk/benches/log.rs @@ -2,6 +2,17 @@ //! So to run test named "full-log-with-attributes/with-context" you would run `$ cargo bench --bench log -- --exact full-log-with-attributes/with-context` //! To run all tests for logs you would run `$ cargo bench --bench log` //! +/* +The benchmark results: +criterion = "0.5.1" +OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2) +Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs, +RAM: 64.0 GB +| Test | Average time| +|--------------------------------|-------------| +| Logger_Creation | 30 ns | +| LoggerProvider_Creation | 909 ns | +*/ use std::collections::HashMap; use std::time::SystemTime; @@ -80,7 +91,32 @@ fn log_benchmark_group(c: &mut Criterion, name: &str, f: F) { group.finish(); } +fn log_provider_creation(c: &mut Criterion) { + c.bench_function("LoggerProvider_Creation", |b| { + b.iter(|| { + let _provider = LoggerProvider::builder() + .with_log_processor(NoopProcessor {}) + .build(); + }); + }); +} + +fn logger_creation(c: &mut Criterion) { + // Provider is created once, outside of the benchmark + let provider = LoggerProvider::builder() + .with_log_processor(NoopProcessor {}) + .build(); + + c.bench_function("Logger_Creation", |b| { + b.iter(|| { + let _logger = provider.logger("benchmark"); + }); + }); +} + fn criterion_benchmark(c: &mut Criterion) { + logger_creation(c); + log_provider_creation(c); log_benchmark_group(c, "simple-log", |logger| { let mut log_record = logger.create_log_record(); log_record.set_body("simple log".into()); From 9ff54af68a00de372f7335dcdc2b6be1c6c796d9 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Wed, 7 Aug 2024 19:52:38 +0000 Subject: [PATCH 2/2] format --- opentelemetry-sdk/benches/log.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opentelemetry-sdk/benches/log.rs b/opentelemetry-sdk/benches/log.rs index 695d589c15..adacd1f740 100644 --- a/opentelemetry-sdk/benches/log.rs +++ b/opentelemetry-sdk/benches/log.rs @@ -95,8 +95,8 @@ fn log_provider_creation(c: &mut Criterion) { c.bench_function("LoggerProvider_Creation", |b| { b.iter(|| { let _provider = LoggerProvider::builder() - .with_log_processor(NoopProcessor {}) - .build(); + .with_log_processor(NoopProcessor {}) + .build(); }); }); } @@ -104,8 +104,8 @@ fn log_provider_creation(c: &mut Criterion) { fn logger_creation(c: &mut Criterion) { // Provider is created once, outside of the benchmark let provider = LoggerProvider::builder() - .with_log_processor(NoopProcessor {}) - .build(); + .with_log_processor(NoopProcessor {}) + .build(); c.bench_function("Logger_Creation", |b| { b.iter(|| {