mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-25 20:02:34 +00:00
Add benchmarks
This commit is contained in:
@@ -36,6 +36,7 @@ thiserror = "1.0.38"
|
||||
java-properties = "1.4.1"
|
||||
java-rand = "0.2.0"
|
||||
rand = "0.8.5"
|
||||
criterion = "0.4.0"
|
||||
|
||||
[features]
|
||||
default = ["image"]
|
||||
@@ -70,6 +71,10 @@ members = [
|
||||
"crates/cli"
|
||||
]
|
||||
|
||||
[[bench]]
|
||||
name = "benchmarks"
|
||||
harness = false
|
||||
|
||||
[profile.release]
|
||||
codegen-units = 1
|
||||
lto = true
|
||||
|
||||
204
benches/benchmarks.rs
Normal file
204
benches/benchmarks.rs
Normal file
@@ -0,0 +1,204 @@
|
||||
use criterion::{criterion_group, criterion_main, Criterion};
|
||||
use rxing::aztec::AztecReader;
|
||||
use rxing::common::HybridBinarizer;
|
||||
use rxing::datamatrix::DataMatrixReader;
|
||||
use rxing::maxicode::MaxiCodeReader;
|
||||
use rxing::oned::rss::expanded::RSSExpandedReader;
|
||||
use rxing::oned::rss::RSS14Reader;
|
||||
use rxing::oned::{
|
||||
CodaBarReader, Code39Reader, Code93Reader, EAN13Reader, EAN8Reader, ITFReader, UPCAReader,
|
||||
UPCEReader,
|
||||
};
|
||||
use rxing::pdf417::PDF417Reader;
|
||||
use rxing::qrcode::QRCodeReader;
|
||||
use rxing::{BinaryBitmap, BufferedImageLuminanceSource, Reader};
|
||||
use std::path::Path;
|
||||
|
||||
fn get_image(
|
||||
path: impl AsRef<Path>,
|
||||
) -> BinaryBitmap<HybridBinarizer<BufferedImageLuminanceSource>> {
|
||||
BinaryBitmap::new(HybridBinarizer::new(BufferedImageLuminanceSource::new(
|
||||
image::open(path).unwrap(),
|
||||
)))
|
||||
}
|
||||
|
||||
fn aztec_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/aztec-1/abc-37x37.png");
|
||||
let mut reader = AztecReader::default();
|
||||
|
||||
c.bench_function("aztec", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn codabar_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/codabar-1/02.png");
|
||||
let mut reader = CodaBarReader::default();
|
||||
|
||||
c.bench_function("codabar", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn code39_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/code39-1/1.png");
|
||||
let mut reader = Code39Reader::default();
|
||||
|
||||
c.bench_function("code39", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn code93_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/code93-1/1.png");
|
||||
let mut reader = Code93Reader::default();
|
||||
|
||||
c.bench_function("code93", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn datamatrix_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/datamatrix-1/C40.png");
|
||||
let mut reader = DataMatrixReader::default();
|
||||
|
||||
c.bench_function("datamatrix", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn ean8_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/ean8-1/1.png");
|
||||
let mut reader = EAN8Reader::default();
|
||||
|
||||
c.bench_function("ean8", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn ean13_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/ean13-1/1.png");
|
||||
let mut reader = EAN13Reader::default();
|
||||
|
||||
c.bench_function("ean13", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn itf_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/itf-1/1.png");
|
||||
let mut reader = ITFReader::default();
|
||||
|
||||
c.bench_function("itf", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn maxicode_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/maxicode-1/1.png");
|
||||
let mut reader = MaxiCodeReader::default();
|
||||
|
||||
c.bench_function("maxicode", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn pdf417_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/pdf417-1/01.png");
|
||||
let mut reader = PDF417Reader::default();
|
||||
|
||||
c.bench_function("pdf417", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn qrcode_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/qrcode-2/1.png");
|
||||
let mut reader = QRCodeReader::default();
|
||||
|
||||
c.bench_function("qrcode", |b| {
|
||||
b.iter(|| {
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn rss14_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/rss14-1/3.png");
|
||||
c.bench_function("rss14", |b| {
|
||||
b.iter(|| {
|
||||
let mut reader = RSS14Reader::default();
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn rss_expanded_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/rssexpanded-1/1.png");
|
||||
c.bench_function("rss_expanded", |b| {
|
||||
b.iter(|| {
|
||||
let mut reader = RSSExpandedReader::default();
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn upca_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/upca-4/1.png");
|
||||
c.bench_function("upca", |b| {
|
||||
b.iter(|| {
|
||||
let mut reader = UPCAReader::default();
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn upce_benchmark(c: &mut Criterion) {
|
||||
let mut image = get_image("test_resources/blackbox/upce-1/1.png");
|
||||
c.bench_function("upce", |b| {
|
||||
b.iter(|| {
|
||||
let mut reader = UPCEReader::default();
|
||||
let _res = reader.decode(&mut image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(
|
||||
benches,
|
||||
aztec_benchmark,
|
||||
codabar_benchmark,
|
||||
code39_benchmark,
|
||||
code93_benchmark,
|
||||
datamatrix_benchmark,
|
||||
ean8_benchmark,
|
||||
ean13_benchmark,
|
||||
itf_benchmark,
|
||||
maxicode_benchmark,
|
||||
pdf417_benchmark,
|
||||
qrcode_benchmark,
|
||||
rss14_benchmark,
|
||||
rss_expanded_benchmark,
|
||||
upca_benchmark,
|
||||
upce_benchmark
|
||||
);
|
||||
criterion_main!(benches);
|
||||
Reference in New Issue
Block a user