mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-27 21:02:35 +00:00
Add benchmarks
This commit is contained in:
@@ -36,6 +36,7 @@ thiserror = "1.0.38"
|
|||||||
java-properties = "1.4.1"
|
java-properties = "1.4.1"
|
||||||
java-rand = "0.2.0"
|
java-rand = "0.2.0"
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
|
criterion = "0.4.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["image"]
|
default = ["image"]
|
||||||
@@ -70,6 +71,10 @@ members = [
|
|||||||
"crates/cli"
|
"crates/cli"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "benchmarks"
|
||||||
|
harness = false
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
codegen-units = 1
|
codegen-units = 1
|
||||||
lto = true
|
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