Some checks failed
ci/woodpecker/pr/check Pipeline failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
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<tele_tui::tdlib::MessageInfo> {
|
|
(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);
|