use criterion::{black_box, criterion_group, criterion_main, Criterion}; use tele_tui::message_grouping::group_messages; use tele_tui::tdlib::types::MessageBuilder; use tele_tui::types::MessageId; fn create_test_messages(count: usize) -> Vec { (0..count) .map(|i| { let builder = MessageBuilder::new(MessageId::new(i as i64)) .sender_name(&format!("User{}", i % 10)) .text(&format!( "Test message number {} with some longer text to make it more realistic", i )) .date(1640000000 + (i as i32 * 60)); if i % 2 == 0 { builder.outgoing().read().build() } else { builder.incoming().build() } }) .collect() } fn benchmark_group_100_messages(c: &mut Criterion) { let messages = create_test_messages(100); c.bench_function("group_100_messages", |b| { b.iter(|| group_messages(black_box(&messages))); }); } fn benchmark_group_500_messages(c: &mut Criterion) { let messages = create_test_messages(500); c.bench_function("group_500_messages", |b| { b.iter(|| group_messages(black_box(&messages))); }); } criterion_group!(benches, benchmark_group_100_messages, benchmark_group_500_messages); criterion_main!(benches);