28 lines
936 B
Rust
28 lines
936 B
Rust
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
|
|
use libretrogd::graphics::*;
|
|
use libretrogd::{SCREEN_HEIGHT, SCREEN_WIDTH};
|
|
|
|
pub fn criterion_benchmark(c: &mut Criterion) {
|
|
let mut source = Bitmap::new(SCREEN_WIDTH, SCREEN_HEIGHT).unwrap();
|
|
let mut dest = vec![0u32; (SCREEN_WIDTH * SCREEN_HEIGHT * 4) as usize].into_boxed_slice();
|
|
let palette = Palette::new_vga_palette().unwrap();
|
|
|
|
c.bench_function("deindex_bitmap_pixels", |b| {
|
|
b.iter(|| source.copy_as_argb_to(&mut dest, &palette))
|
|
});
|
|
|
|
c.bench_function("set_pixel", |b| {
|
|
b.iter(|| source.set_pixel(black_box(100), black_box(100), black_box(42)))
|
|
});
|
|
|
|
c.bench_function("set_pixel_unchecked", |b| {
|
|
b.iter(|| unsafe {
|
|
source.set_pixel_unchecked(black_box(100), black_box(100), black_box(42))
|
|
})
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, criterion_benchmark);
|
|
criterion_main!(benches);
|