Skip to content

Commit

Permalink
Add a benchmark to sdk logs that is comparable to tracing appender (o…
Browse files Browse the repository at this point in the history
  • Loading branch information
cijothomas authored Aug 9, 2024
1 parent 60f3324 commit fe2fb96
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions opentelemetry-sdk/benches/log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ RAM: 64.0 GB
|--------------------------------|-------------|
| Logger_Creation | 30 ns |
| LoggerProvider_Creation | 909 ns |
| Logging_Comparable_To_Appender | 135 ns |
*/

use std::collections::HashMap;
Expand Down Expand Up @@ -114,9 +115,36 @@ fn logger_creation(c: &mut Criterion) {
});
}

fn logging_comparable_to_appender(c: &mut Criterion) {
let provider = LoggerProvider::builder()
.with_log_processor(NoopProcessor {})
.build();
let logger = provider.logger("benchmark");

// This mimics the logic from opentelemetry-tracing-appender closely, but
// without the overhead of the tracing layer itself.
c.bench_function("Logging_Comparable_To_Appender", |b| {
b.iter(|| {
let mut log_record = logger.create_log_record();
let now = SystemTime::now();
log_record.set_observed_timestamp(now);
log_record.set_target("my-target".to_string());
log_record.set_event_name("CheckoutFailed");
log_record.set_severity_number(Severity::Warn);
log_record.set_severity_text("WARN".into());
log_record.add_attribute("book_id", "12345");
log_record.add_attribute("book_title", "Rust Programming Adventures");
log_record.add_attribute("message", "Unable to process checkout.");

logger.emit(log_record);
});
});
}

fn criterion_benchmark(c: &mut Criterion) {
logger_creation(c);
log_provider_creation(c);
logging_comparable_to_appender(c);
log_benchmark_group(c, "simple-log", |logger| {
let mut log_record = logger.create_log_record();
log_record.set_body("simple log".into());
Expand Down

0 comments on commit fe2fb96

Please sign in to comment.