librsvg source for verification 2026-05-22

This commit is contained in:
2026-05-22 16:45:08 +08:00
commit 75af7ac721
2138 changed files with 161177 additions and 0 deletions

57
rsvg/benches/pixel_ops.rs Normal file
View File

@@ -0,0 +1,57 @@
use criterion::{Criterion, criterion_group, criterion_main};
use std::hint::black_box;
use rsvg::bench_only::{Pixel, PixelOps};
const OTHER: Pixel = Pixel {
r: 0x10,
g: 0x20,
b: 0x30,
a: 0x40,
};
const N: usize = 1024;
fn make_pixels(n: usize) -> Vec<Pixel> {
(0..n)
.map(|i| Pixel {
r: (i / 2) as u8,
g: (i / 3) as u8,
b: (i / 4) as u8,
a: i as u8,
})
.collect()
}
fn bench_op<F>(pixels: &[Pixel], op: F)
where
F: Fn(&Pixel) -> Pixel,
{
let result: Vec<Pixel> = pixels.iter().map(op).collect();
black_box(result);
}
fn bench_pixel_ops(c: &mut Criterion) {
c.bench_function("pixel_diff", |b| {
let pixels = black_box(make_pixels(N));
let other = black_box(OTHER);
b.iter(|| bench_op(&pixels, |pixel| pixel.diff(&other)))
});
c.bench_function("pixel_to_luminance_mask", |b| {
let pixels = black_box(make_pixels(N));
b.iter(|| bench_op(&pixels, |pixel| pixel.to_luminance_mask()))
});
c.bench_function("pixel_premultiply", |b| {
let pixels = black_box(make_pixels(N));
b.iter(|| bench_op(&pixels, |pixel| pixel.premultiply()))
});
c.bench_function("pixel_unpremultiply", |b| {
let pixels = black_box(make_pixels(N));
b.iter(|| bench_op(&pixels, |pixel| pixel.unpremultiply()))
});
}
criterion_group!(benches, bench_pixel_ops);
criterion_main!(benches);