edit/benches/lib.rs

65 lines
2.4 KiB
Rust
Raw Normal View History

use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
2025-03-25 20:03:19 +01:00
use edit::helpers::*;
use edit::simd;
use edit::ucd;
2025-03-25 20:03:19 +01:00
fn bench(c: &mut Criterion) {
let mut buffer1 = [0u8; 2048];
let mut buffer4 = [0u32; 2048];
2025-03-28 22:53:32 +01:00
let reference = concat!(
"In the quiet twilight, dreams unfold, soft whispers of a story untold.\n",
"月明かりが静かに照らし出し、夢を見る心の奥で詩が静かに囁かれる\n",
"Stars collide in the early light of hope, echoing the silent call of the night.\n",
"夜の静寂、希望と孤独が混ざり合うその中で詩が永遠に続く\n",
);
2025-03-25 20:03:19 +01:00
let buffer = reference.repeat(10);
let bytes = buffer.as_bytes();
let mut group = c.benchmark_group("ucd::MeasurementConfig::goto_logical");
2025-03-25 20:03:19 +01:00
group.throughput(Throughput::Bytes(bytes.len() as u64));
group.bench_function("basic", |b| {
b.iter(|| ucd::MeasurementConfig::new(&bytes).goto_logical(Point::MAX))
2025-03-25 20:03:19 +01:00
});
group.bench_function("word_wrap", |b| {
2025-03-28 22:53:32 +01:00
b.iter(|| {
ucd::MeasurementConfig::new(&bytes)
.with_word_wrap_column(50)
.goto_logical(Point::MAX)
2025-03-28 22:53:32 +01:00
})
});
2025-03-25 20:03:19 +01:00
group.finish();
let mut group = c.benchmark_group("simd::memchr2");
for &size in &[8usize, 40, 72, 1032] {
group.throughput(Throughput::Bytes(size as u64 + 1));
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
buffer1.fill(b'a');
buffer1[size] = b'\n';
b.iter(|| simd::memchr2(b'\n', b'\r', &buffer1, 0));
});
}
group.finish();
let mut group = c.benchmark_group("simd::memset::<u8>");
for &size in &[8usize, 40, 72, 1032] {
group.throughput(Throughput::Bytes(size as u64));
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
b.iter(|| simd::memset(&mut buffer1[..size], 0));
});
}
group.finish();
let mut group = c.benchmark_group("simd::memset::<u32>");
for &size in &[8usize, 40, 72, 1032] {
group.throughput(Throughput::Bytes(size as u64));
group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, &size| {
b.iter(|| simd::memset(&mut buffer4[..size / 4], 0));
});
}
group.finish();
2025-03-25 20:03:19 +01:00
}
criterion_group!(benches, bench);
criterion_main!(benches);