perf: optimizations and additional test cases

This commit is contained in:
Michael Aaron Murphy 2025-11-25 06:24:34 +01:00
parent db4d26e591
commit 44edef9673
No known key found for this signature in database
GPG key ID: B2732D4240C9212C
9 changed files with 225 additions and 226 deletions

View file

@ -1,9 +1,8 @@
use cosmic_freedesktop_icons::lookup;
use criterion::{
AxisScale, BenchmarkId, Criterion, PlotConfiguration, black_box, criterion_group,
criterion_main,
AxisScale, BenchmarkId, Criterion, PlotConfiguration, criterion_group, criterion_main,
};
use freedesktop_icons::lookup;
use gtk4::{IconLookupFlags, IconTheme, TextDirection};
use std::hint::black_box;
pub fn bench_lookups(c: &mut Criterion) {
let mut group = c.benchmark_group("ComparisonsLookups");
@ -11,21 +10,13 @@ pub fn bench_lookups(c: &mut Criterion) {
group.plot_config(plot_config);
let args = [
"user-home", // (Best case) An icon that can be found in the current theme
"firefox", // An icon that can be found in the hicolor default theme
"archlinux-logo", // An icon that resides in /usr/share/pixmaps
"not-found", // (Worst case) An icon that does not exist
"user-home", // (Best case) An icon that can be found in the current theme
"firefox", // An icon that can be found in the hicolor default theme
"com.valvesoftware.Steam", // An icon that resides in /usr/share/pixmaps
"not-found", // (Worst case) An icon that does not exist
];
for arg in args {
group.bench_with_input(BenchmarkId::new("freedesktop-icons", arg), arg, |b, arg| {
b.iter(|| {
lookup(black_box(arg))
.with_theme(black_box("Adwaita"))
.find()
});
});
group.bench_with_input(
BenchmarkId::new("freedesktop-icons-cache", arg),
arg,
@ -40,33 +31,6 @@ pub fn bench_lookups(c: &mut Criterion) {
});
},
);
group.bench_with_input(BenchmarkId::new("linicon", arg), arg, |b, arg| {
b.iter(|| {
linicon::lookup_icon(black_box(arg))
.from_theme(black_box("Adwaita"))
.with_scale(black_box(1))
.with_size(black_box(24))
.next()
});
});
group.bench_with_input(BenchmarkId::new("gtk", arg), arg, |b, arg| {
gtk4::init().unwrap();
let theme = IconTheme::new();
b.iter(|| {
theme
.lookup_icon(
black_box(arg),
black_box(&[]),
black_box(24),
black_box(1),
black_box(TextDirection::None),
black_box(IconLookupFlags::empty()),
)
.icon_name()
});
});
}
group.finish();