Luigit
repositories / smith

smith

There are many coding harnesses - but this one is fast

owned by admin

smith-bench/benches/wall_clock.rs

Raw
//! Wall-clock benches for local A/B comparisons (`SMH-SPEC-SPEC0001`,
//! Performance and portability): criterion through `cargo x bench`.
//!
//! Numbers answer "faster here, now" on one machine in one session; they
//! are never committed and never gate. Compare two builds with
//! `cargo x bench -- --save-baseline <change>` then `--baseline <change>`.

use criterion::{Criterion, criterion_main};
use smith::{Message, MessageId, Role};
use std::hint::black_box;

fn message_creation(criterion: &mut Criterion) {
    let mut group = criterion.benchmark_group("message_creation");
    group.bench_function("message_id", |bencher| {
        bencher.iter(|| black_box(MessageId::new()));
    });
    group.bench_function("empty_message", |bencher| {
        bencher.iter(|| black_box(Message::new(Role::Assistant)));
    });
    group.bench_function("text_message", |bencher| {
        bencher.iter(|| black_box(Message::with_text(Role::User, "benchmark text")));
    });
    group.finish();
}

fn benches() {
    let mut criterion = Criterion::default().configure_from_args();
    message_creation(&mut criterion);
}

criterion_main!(benches);