use std::sync::Arc;
use criterion::{Criterion, black_box, criterion_group, criterion_main};
use heartbit_core::__bench::BenchMockProvider;
use heartbit_core::AgentRunner;
fn bench_react_turn(c: &mut Criterion) {
let rt = tokio::runtime::Builder::new_current_thread()
.build()
.expect("runtime");
let provider = Arc::new(BenchMockProvider::new_text("done."));
let runner = AgentRunner::builder(provider)
.name("bench-agent")
.system_prompt("You are a benchmark agent. Reply 'done.'")
.max_turns(1)
.build()
.expect("build agent");
c.bench_function("agent_react_turn_no_tools", |b| {
b.iter(|| {
rt.block_on(async {
let out = runner
.execute(black_box("Run the benchmark task."))
.await
.expect("execute");
black_box(out.tokens_used);
black_box(out.result.len());
})
})
});
}
criterion_group!(benches, bench_react_turn);
criterion_main!(benches);