Skip to content

Commit c7b4d02

Browse files
Cleanup benchmark code (#431)
1 parent 6df1a1b commit c7b4d02

File tree

1 file changed

+11
-38
lines changed

1 file changed

+11
-38
lines changed

benches/deku.rs

+11-38
Original file line numberDiff line numberDiff line change
@@ -34,54 +34,27 @@ struct DekuVec {
3434
data: Vec<u8>,
3535
}
3636

37-
fn deku_read_bits(mut reader: impl Read) {
38-
let mut reader = Reader::new(&mut reader);
39-
let _v = DekuBits::from_reader_with_ctx(&mut reader, ()).unwrap();
40-
}
41-
42-
fn deku_write_bits(input: &DekuBits) {
43-
let _v = input.to_bytes().unwrap();
44-
}
45-
46-
fn deku_read_byte(mut reader: impl Read) {
47-
let mut reader = Reader::new(&mut reader);
48-
let _v = DekuBytes::from_reader_with_ctx(&mut reader, ()).unwrap();
49-
}
50-
51-
fn deku_write_byte(input: &DekuBytes) {
37+
fn deku_write<T: DekuContainerWrite>(input: &T) {
5238
let _v = input.to_bytes().unwrap();
5339
}
5440

55-
fn deku_read_enum(mut reader: impl Read) {
41+
fn deku_read<T: for<'a> DekuContainerRead<'a>>(mut reader: impl Read) {
5642
let mut reader = Reader::new(&mut reader);
57-
let _v = DekuEnum::from_reader_with_ctx(&mut reader, ()).unwrap();
58-
}
59-
60-
fn deku_write_enum(input: &DekuEnum) {
61-
let _v = input.to_bytes().unwrap();
62-
}
63-
64-
fn deku_read_vec(mut reader: impl Read) {
65-
let mut reader = Reader::new(&mut reader);
66-
let _v = DekuVec::from_reader_with_ctx(&mut reader, ()).unwrap();
67-
}
68-
69-
fn deku_write_vec(input: &DekuVec) {
70-
let _v = input.to_bytes().unwrap();
43+
let _v = T::from_reader_with_ctx(&mut reader, ()).unwrap();
7144
}
7245

7346
fn criterion_benchmark(c: &mut Criterion) {
7447
c.bench_function("deku_read_byte", |b| {
7548
let reader = Cursor::new(&[0x01; 1 + 2 + 4]);
7649
b.iter_batched(
7750
|| reader.clone(),
78-
|mut reader| deku_read_byte(&mut reader),
51+
|mut reader| deku_read::<DekuBytes>(&mut reader),
7952
BatchSize::SmallInput,
8053
)
8154
});
8255
c.bench_function("deku_write_byte", |b| {
8356
b.iter(|| {
84-
deku_write_byte(black_box(&DekuBytes {
57+
deku_write(black_box(&DekuBytes {
8558
data_00: 0x00,
8659
data_01: 0x02,
8760
data_02: 0x03,
@@ -92,13 +65,13 @@ fn criterion_benchmark(c: &mut Criterion) {
9265
let reader = Cursor::new(&[0x01; 1]);
9366
b.iter_batched(
9467
|| reader.clone(),
95-
|mut reader| deku_read_bits(&mut reader),
68+
|mut reader| deku_read::<DekuBits>(&mut reader),
9669
BatchSize::SmallInput,
9770
)
9871
});
9972
c.bench_function("deku_write_bits", |b| {
10073
b.iter(|| {
101-
deku_write_bits(black_box(&DekuBits {
74+
deku_write(black_box(&DekuBits {
10275
data_01: 0x0f,
10376
data_02: 0x00,
10477
data_03: 0x01,
@@ -110,12 +83,12 @@ fn criterion_benchmark(c: &mut Criterion) {
11083
let reader = Cursor::new(&[0x01; 2]);
11184
b.iter_batched(
11285
|| reader.clone(),
113-
|mut reader| deku_read_enum(&mut reader),
86+
|mut reader| deku_read::<DekuEnum>(&mut reader),
11487
BatchSize::SmallInput,
11588
)
11689
});
11790
c.bench_function("deku_write_enum", |b| {
118-
b.iter(|| deku_write_enum(black_box(&DekuEnum::VariantA(0x02))))
91+
b.iter(|| deku_write(black_box(&DekuEnum::VariantA(0x02))))
11992
});
12093

12194
let deku_write_vec_input = DekuVec {
@@ -126,12 +99,12 @@ fn criterion_benchmark(c: &mut Criterion) {
12699
let reader = Cursor::new(&[0x08; 8 + 1]);
127100
b.iter_batched(
128101
|| reader.clone(),
129-
|mut reader| deku_read_vec(&mut reader),
102+
|mut reader| deku_read::<DekuVec>(&mut reader),
130103
BatchSize::SmallInput,
131104
)
132105
});
133106
c.bench_function("deku_write_vec", |b| {
134-
b.iter(|| deku_write_vec(black_box(&deku_write_vec_input)))
107+
b.iter(|| deku_write(black_box(&deku_write_vec_input)))
135108
});
136109
}
137110

0 commit comments

Comments
 (0)