#![allow(
missing_docs,
unused_qualifications,
unreachable_pub,
clippy::must_use_candidate,
clippy::needless_pass_by_value
)]
mod common;
use std::hint::black_box;
use common::{Latch, MESSAGES, Order, Pending};
use gungraun::{library_benchmark, library_benchmark_group, main};
use ruststream::memory::prelude::*;
#[subscriber("orders")]
async fn consume(orders: &[Order], ctx: &mut Context<'_, (), Latch>) -> HandlerOutcome {
for order in orders {
black_box((order.id, order.quantity));
ctx.state().arrived();
}
HandlerOutcome::ack()
}
fn app(messages: usize) -> Pending {
common::pending(messages, 0, |b| {
b.include(consume.batch(nonzero!(64)));
})
}
#[library_benchmark(config = common::config(188, 31))]
#[bench::first(app(1))]
#[bench::base(app(MESSAGES))]
#[bench::twice(app(2 * MESSAGES))]
fn service(app: Pending) {
common::start_and_drain(app);
}
library_benchmark_group!(name = batch; benchmarks = service);
main!(library_benchmark_groups = batch);