2022-09-24 02:34:22 -04:00
|
|
|
use lofty::{ParseOptions, Probe};
|
2021-04-21 13:48:21 -04:00
|
|
|
|
2021-12-10 22:09:11 -05:00
|
|
|
use criterion::{criterion_group, criterion_main, Criterion};
|
|
|
|
|
|
|
|
use std::io::Cursor;
|
|
|
|
|
|
|
|
macro_rules! test_read_file {
|
2022-07-24 19:17:59 -04:00
|
|
|
($c:ident, [$(($NAME:ident, $path:expr)),+ $(,)?]) => {
|
2022-01-31 18:19:11 -05:00
|
|
|
let mut g = $c.benchmark_group("File reading (Inferred from Content)");
|
2021-12-10 22:09:11 -05:00
|
|
|
|
2022-01-31 18:19:11 -05:00
|
|
|
$(
|
|
|
|
const $NAME: &[u8] = include_bytes!($path);
|
2021-12-10 22:09:11 -05:00
|
|
|
|
2022-01-31 18:19:11 -05:00
|
|
|
g.bench_function(
|
|
|
|
stringify!($NAME),
|
|
|
|
|b| b.iter(|| {
|
|
|
|
Probe::new(Cursor::new($NAME))
|
2022-09-24 02:34:22 -04:00
|
|
|
.options(ParseOptions::new())
|
2022-01-31 18:19:11 -05:00
|
|
|
.guess_file_type()
|
|
|
|
.unwrap()
|
2022-09-24 02:34:22 -04:00
|
|
|
.read()
|
2022-01-31 18:19:11 -05:00
|
|
|
.unwrap()
|
|
|
|
})
|
|
|
|
);
|
|
|
|
)+
|
|
|
|
}
|
|
|
|
}
|
2021-12-10 22:09:11 -05:00
|
|
|
|
|
|
|
fn content_infer_read(c: &mut Criterion) {
|
2022-01-31 18:19:11 -05:00
|
|
|
test_read_file!(
|
|
|
|
c,
|
|
|
|
[
|
2023-11-15 12:02:09 -05:00
|
|
|
(AAC, "../benches_assets/01 TempleOS Hymn Risen (Remix).aac"),
|
|
|
|
(
|
|
|
|
AIFF,
|
|
|
|
"../benches_assets/01 TempleOS Hymn Risen (Remix).aiff"
|
|
|
|
),
|
|
|
|
(APE, "../benches_assets/01 TempleOS Hymn Risen (Remix).ape"),
|
|
|
|
(
|
|
|
|
FLAC,
|
|
|
|
"../benches_assets/01 TempleOS Hymn Risen (Remix).flac"
|
|
|
|
),
|
|
|
|
(MP4, "../benches_assets/01 TempleOS Hymn Risen (Remix).m4a"),
|
|
|
|
(MP3, "../benches_assets/01 TempleOS Hymn Risen (Remix).mp3"),
|
|
|
|
(MPC, "../benches_assets/01 TempleOS Hymn Risen (Remix).mpc"),
|
|
|
|
(
|
|
|
|
OPUS,
|
|
|
|
"../benches_assets/01 TempleOS Hymn Risen (Remix).opus"
|
|
|
|
),
|
|
|
|
(RIFF, "../benches_assets/01 TempleOS Hymn Risen (Remix).wav"),
|
|
|
|
(
|
|
|
|
SPEEX,
|
|
|
|
"../benches_assets/01 TempleOS Hymn Risen (Remix).spx"
|
|
|
|
),
|
|
|
|
(
|
|
|
|
VORBIS,
|
|
|
|
"../benches_assets/01 TempleOS Hymn Risen (Remix).ogg"
|
|
|
|
),
|
|
|
|
(
|
|
|
|
WAVPACK,
|
|
|
|
"../benches_assets/01 TempleOS Hymn Risen (Remix).wv"
|
|
|
|
),
|
2022-01-31 18:19:11 -05:00
|
|
|
]
|
|
|
|
);
|
2021-04-21 13:48:21 -04:00
|
|
|
}
|
|
|
|
|
2022-02-19 01:16:35 -05:00
|
|
|
criterion_group!(benches, content_infer_read);
|
2021-04-21 13:48:21 -04:00
|
|
|
criterion_main!(benches);
|