Skip to content

Commit 6c78f99

Browse files
committed
One more perf test
1 parent a78d76b commit 6c78f99

File tree

5 files changed

+29
-27
lines changed

5 files changed

+29
-27
lines changed

deku-derive/src/macros/deku_read.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
115115

116116
tokens.extend(quote! {
117117
impl #imp ::#crate_::DekuReader<#lifetime, #ctx_types> for #ident #wher {
118-
#[inline(always)]
118+
#[inline]
119119
fn from_reader_with_ctx<R: ::#crate_::no_std_io::Read>(__deku_reader: &mut ::#crate_::reader::Reader<R>, #ctx_arg) -> core::result::Result<Self, ::#crate_::DekuError> {
120120
#read_body
121121
}
@@ -127,7 +127,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
127127

128128
tokens.extend(quote! {
129129
impl #imp ::#crate_::DekuReader<#lifetime> for #ident #wher {
130-
#[inline(always)]
130+
#[inline]
131131
fn from_reader_with_ctx<R: ::#crate_::no_std_io::Read>(__deku_reader: &mut ::#crate_::reader::Reader<R>, _: ()) -> core::result::Result<Self, ::#crate_::DekuError> {
132132
#read_body
133133
}
@@ -376,7 +376,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
376376
tokens.extend(quote! {
377377
#[allow(non_snake_case)]
378378
impl #imp ::#crate_::DekuReader<#lifetime, #ctx_types> for #ident #wher {
379-
#[inline(always)]
379+
#[inline]
380380
fn from_reader_with_ctx<R: ::#crate_::no_std_io::Read>(__deku_reader: &mut ::#crate_::reader::Reader<R>, #ctx_arg) -> core::result::Result<Self, ::#crate_::DekuError> {
381381
#read_body
382382
}
@@ -389,7 +389,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
389389
tokens.extend(quote! {
390390
#[allow(non_snake_case)]
391391
impl #imp ::#crate_::DekuReader<#lifetime> for #ident #wher {
392-
#[inline(always)]
392+
#[inline]
393393
fn from_reader_with_ctx<R: ::#crate_::no_std_io::Read>(__deku_reader: &mut ::#crate_::reader::Reader<R>, _: ()) -> core::result::Result<Self, ::#crate_::DekuError> {
394394
#read_body
395395
}
@@ -409,7 +409,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
409409
if let Some(deku_id_type) = deku_id_type {
410410
tokens.extend(quote! {
411411
impl #imp DekuEnumExt<#lifetime, (#deku_id_type)> for #ident #wher {
412-
#[inline(always)]
412+
#[inline]
413413
fn deku_id(&self) -> core::result::Result<(#deku_id_type), DekuError> {
414414
match self {
415415
#(#deku_ids ,)*
@@ -793,13 +793,13 @@ pub fn emit_container_read(
793793
quote! {
794794
impl #imp ::#crate_::DekuContainerRead<#lifetime> for #ident #wher {
795795
#[allow(non_snake_case)]
796-
#[inline(always)]
796+
#[inline]
797797
fn from_reader<'a, R: ::#crate_::no_std_io::Read>(__deku_input: (&'a mut R, usize)) -> core::result::Result<(usize, Self), ::#crate_::DekuError> {
798798
#from_reader_body
799799
}
800800

801801
#[allow(non_snake_case)]
802-
#[inline(always)]
802+
#[inline]
803803
fn from_bytes(__deku_input: (&#lifetime [u8], usize)) -> core::result::Result<((&#lifetime [u8], usize), Self), ::#crate_::DekuError> {
804804
#from_bytes_body
805805
}
@@ -819,7 +819,7 @@ pub fn emit_try_from(
819819
impl #imp core::convert::TryFrom<&#lifetime [u8]> for #ident #wher {
820820
type Error = ::#crate_::DekuError;
821821

822-
#[inline(always)]
822+
#[inline]
823823
fn try_from(input: &#lifetime [u8]) -> core::result::Result<Self, Self::Error> {
824824
let total_len = input.len();
825825
let mut cursor = ::#crate_::no_std_io::Cursor::new(input);

deku-derive/src/macros/deku_write.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
5151
impl #imp core::convert::TryFrom<#ident> for ::#crate_::bitvec::BitVec<u8, ::#crate_::bitvec::Msb0> #wher {
5252
type Error = ::#crate_::DekuError;
5353

54-
#[inline(always)]
54+
#[inline]
5555
fn try_from(input: #ident) -> core::result::Result<Self, Self::Error> {
5656
input.to_bits()
5757
}
@@ -60,7 +60,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
6060
impl #imp core::convert::TryFrom<#ident> for Vec<u8> #wher {
6161
type Error = ::#crate_::DekuError;
6262

63-
#[inline(always)]
63+
#[inline]
6464
fn try_from(input: #ident) -> core::result::Result<Self, Self::Error> {
6565
::#crate_::DekuContainerWrite::to_bytes(&input)
6666
}
@@ -88,7 +88,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
8888

8989
tokens.extend(quote! {
9090
impl #imp DekuUpdate for #ident #wher {
91-
#[inline(always)]
91+
#[inline]
9292
fn update(&mut self) -> core::result::Result<(), ::#crate_::DekuError> {
9393
#update_use
9494
#(#field_updates)*
@@ -99,7 +99,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
9999

100100
impl #imp ::#crate_::DekuWriter<#ctx_types> for #ident #wher {
101101
#[allow(unused_variables)]
102-
#[inline(always)]
102+
#[inline]
103103
fn to_writer<W: ::#crate_::no_std_io::Write>(&self, __deku_writer: &mut ::#crate_::writer::Writer<W>, #ctx_arg) -> core::result::Result<(), ::#crate_::DekuError> {
104104
#write_body
105105
}
@@ -112,7 +112,7 @@ fn emit_struct(input: &DekuData) -> Result<TokenStream, syn::Error> {
112112
tokens.extend(quote! {
113113
impl #imp ::#crate_::DekuWriter for #ident #wher {
114114
#[allow(unused_variables)]
115-
#[inline(always)]
115+
#[inline]
116116
fn to_writer<W: ::#crate_::no_std_io::Write>(&self, __deku_writer: &mut ::#crate_::writer::Writer<W>, _: ()) -> core::result::Result<(), ::#crate_::DekuError> {
117117
#write_body
118118
}
@@ -247,7 +247,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
247247
impl #imp core::convert::TryFrom<#ident> for ::#crate_::bitvec::BitVec<u8, ::#crate_::bitvec::Msb0> #wher {
248248
type Error = ::#crate_::DekuError;
249249

250-
#[inline(always)]
250+
#[inline]
251251
fn try_from(input: #ident) -> core::result::Result<Self, Self::Error> {
252252
input.to_bits()
253253
}
@@ -256,7 +256,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
256256
impl #imp core::convert::TryFrom<#ident> for Vec<u8> #wher {
257257
type Error = ::#crate_::DekuError;
258258

259-
#[inline(always)]
259+
#[inline]
260260
fn try_from(input: #ident) -> core::result::Result<Self, Self::Error> {
261261
::#crate_::DekuContainerWrite::to_bytes(&input)
262262
}
@@ -283,7 +283,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
283283

284284
tokens.extend(quote! {
285285
impl #imp DekuUpdate for #ident #wher {
286-
#[inline(always)]
286+
#[inline]
287287
fn update(&mut self) -> core::result::Result<(), ::#crate_::DekuError> {
288288
#update_use
289289

@@ -297,7 +297,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
297297

298298
impl #imp ::#crate_::DekuWriter<#ctx_types> for #ident #wher {
299299
#[allow(unused_variables)]
300-
#[inline(always)]
300+
#[inline]
301301
fn to_writer<W: ::#crate_::no_std_io::Write>(&self, __deku_writer: &mut ::#crate_::writer::Writer<W>, #ctx_arg) -> core::result::Result<(), ::#crate_::DekuError> {
302302
#write_body
303303
}
@@ -310,7 +310,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
310310
tokens.extend(quote! {
311311
impl #imp ::#crate_::DekuWriter for #ident #wher {
312312
#[allow(unused_variables)]
313-
#[inline(always)]
313+
#[inline]
314314
fn to_writer<W: ::#crate_::no_std_io::Write>(&self, __deku_writer: &mut ::#crate_::writer::Writer<W>, _: ()) -> core::result::Result<(), ::#crate_::DekuError> {
315315
#write_body
316316
}

examples/ipv4.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use std::convert::TryInto;
21
use std::net::Ipv4Addr;
32

43
use deku::prelude::*;

src/error.rs

+3
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,19 @@ pub struct NeedSize {
1313

1414
impl NeedSize {
1515
/// Create new [NeedSize] from bits
16+
#[inline]
1617
pub fn new(bits: usize) -> Self {
1718
Self { bits }
1819
}
1920

2021
/// Number of bits needed
22+
#[inline]
2123
pub fn bit_size(&self) -> usize {
2224
self.bits
2325
}
2426

2527
/// Number of bytes needed
28+
#[inline]
2629
pub fn byte_size(&self) -> usize {
2730
(self.bits + 7) / 8
2831
}

src/impls/primitive.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ where
6060

6161
// specialize u8 for ByteSize
6262
impl DekuRead<'_, (Endian, ByteSize)> for u8 {
63-
#[inline(always)]
63+
#[inline]
6464
fn read(
6565
input: &BitSlice<u8, Msb0>,
6666
(_, _): (Endian, ByteSize),
@@ -98,7 +98,7 @@ impl DekuReader<'_, (Endian, ByteSize)> for u8 {
9898
macro_rules! ImplDekuReadBits {
9999
($typ:ty, $inner:ty) => {
100100
impl DekuRead<'_, (Endian, BitSize)> for $typ {
101-
#[inline(always)]
101+
#[inline(never)]
102102
fn read(
103103
input: &BitSlice<u8, Msb0>,
104104
(endian, size): (Endian, BitSize),
@@ -200,7 +200,7 @@ macro_rules! ImplDekuReadBits {
200200
macro_rules! ImplDekuReadBytes {
201201
($typ:ty, $inner:ty) => {
202202
impl DekuRead<'_, (Endian, ByteSize)> for $typ {
203-
#[inline(always)]
203+
#[inline(never)]
204204
fn read(
205205
input: &BitSlice<u8, Msb0>,
206206
(endian, size): (Endian, ByteSize),
@@ -235,7 +235,7 @@ macro_rules! ImplDekuReadBytes {
235235
size.0
236236
)));
237237
}
238-
let mut buf = [0; core::mem::size_of::<$typ>()];
238+
let mut buf = [0; MAX_TYPE_BYTES];
239239
let ret = reader.read_bytes(size.0, &mut buf)?;
240240
let a = match ret {
241241
ReaderRet::Bytes => {
@@ -267,7 +267,7 @@ macro_rules! ImplDekuReadBytes {
267267
macro_rules! ImplDekuReadSignExtend {
268268
($typ:ty, $inner:ty) => {
269269
impl DekuRead<'_, (Endian, ByteSize)> for $typ {
270-
#[inline(always)]
270+
#[inline(never)]
271271
fn read(
272272
input: &BitSlice<u8, Msb0>,
273273
(endian, size): (Endian, ByteSize),
@@ -317,7 +317,7 @@ macro_rules! ImplDekuReadSignExtend {
317317
}
318318

319319
impl DekuRead<'_, (Endian, BitSize)> for $typ {
320-
#[inline(always)]
320+
#[inline(never)]
321321
fn read(
322322
input: &BitSlice<u8, Msb0>,
323323
(endian, size): (Endian, BitSize),
@@ -368,9 +368,9 @@ macro_rules! ForwardDekuRead {
368368
reader: &mut Reader<R>,
369369
endian: Endian,
370370
) -> Result<$typ, DekuError> {
371-
let byte_size = core::mem::size_of::<$typ>();
371+
const BYTE_SIZE: usize = core::mem::size_of::<$typ>();
372372

373-
<$typ>::from_reader_with_ctx(reader, (endian, ByteSize(byte_size)))
373+
<$typ>::from_reader_with_ctx(reader, (endian, ByteSize(BYTE_SIZE)))
374374
}
375375
}
376376

0 commit comments

Comments
 (0)