diff options
author | Joey Sacchini <joey@sacchini.net> | 2020-10-19 13:15:37 -0400 |
---|---|---|
committer | Joey Sacchini <joey@sacchini.net> | 2020-10-19 13:15:37 -0400 |
commit | 28cb4334a122a992c8b11846cc6d4f4c8c84be62 (patch) | |
tree | d2c42a011bcd98f5e1dd8d29d1a971991ef52bb4 /src | |
parent | efc2924f61f3729638ef0fa1d8ffe0191612394a (diff) | |
download | mcproto-rs-28cb4334a122a992c8b11846cc6d4f4c8c84be62.tar.gz mcproto-rs-28cb4334a122a992c8b11846cc6d4f4c8c84be62.tar.bz2 mcproto-rs-28cb4334a122a992c8b11846cc6d4f4c8c84be62.zip |
let the compiler decide about inlining, my choices seem to have a trivial impact on performance
Diffstat (limited to 'src')
-rw-r--r-- | src/deserialize.rs | 8 | ||||
-rw-r--r-- | src/nbt.rs | 15 | ||||
-rw-r--r-- | src/utils.rs | 11 | ||||
-rw-r--r-- | src/v1_15_2.rs | 8 |
4 files changed, 0 insertions, 42 deletions
diff --git a/src/deserialize.rs b/src/deserialize.rs index be5496e..dd9a845 100644 --- a/src/deserialize.rs +++ b/src/deserialize.rs @@ -57,7 +57,6 @@ impl fmt::Debug for DeserializeErr { impl std::error::Error for DeserializeErr {} impl<'b, R> Into<DeserializeResult<'b, R>> for DeserializeErr { - #[inline] fn into(self) -> DeserializeResult<'b, R> { Err(self) } @@ -69,24 +68,20 @@ pub struct Deserialized<'b, R> { } impl<'b, R> Into<DeserializeResult<'b, R>> for Deserialized<'b, R> { - #[inline] fn into(self) -> DeserializeResult<'b, R> { Ok(self) } } impl<'b, R> Deserialized<'b, R> { - #[inline] pub fn create(value: R, data: &'b [u8]) -> Self { Deserialized { value, data } } - #[inline] pub fn ok(value: R, rest: &'b [u8]) -> DeserializeResult<'b, R> { Self::create(value, rest).into() } - #[inline] pub fn replace<T>(self, other: T) -> Deserialized<'b, T> { Deserialized { value: other, @@ -94,7 +89,6 @@ impl<'b, R> Deserialized<'b, R> { } } - #[inline] pub fn map<F, T>(self, f: F) -> Deserialized<'b, T> where F: FnOnce(R) -> T, @@ -105,7 +99,6 @@ impl<'b, R> Deserialized<'b, R> { } } - #[inline] pub fn try_map<F, T>(self, f: F) -> DeserializeResult<'b, T> where F: FnOnce(R) -> Result<T, DeserializeErr>, @@ -119,7 +112,6 @@ impl<'b, R> Deserialized<'b, R> { } } - #[inline] pub fn and_then<F, T>(self, f: F) -> DeserializeResult<'b, T> where F: FnOnce(R, &'b [u8]) -> DeserializeResult<'b, T>, @@ -169,7 +169,6 @@ impl TestRandom for Tag { } } -#[inline] fn write_contents<F>(contents: &Vec<F>) -> String where F: fmt::Display, @@ -205,7 +204,6 @@ fn read_nbt_data(data: &[u8]) -> DeserializeResult<NamedTag> { } // reads any named tag: read id -> read name -> read tag with id -> name tag with name -#[inline] pub fn read_named_tag(data: &[u8]) -> DeserializeResult<NamedTag> { let Deserialized { value: tag_type_id, @@ -221,7 +219,6 @@ pub fn read_named_tag(data: &[u8]) -> DeserializeResult<NamedTag> { } // reads any tag (given it's id) -#[inline] pub fn read_tag(tag_type_id: u8, data: &[u8]) -> DeserializeResult<Tag> { match tag_type_id { 0x00 => Deserialized::ok(Tag::End, data), @@ -241,44 +238,36 @@ pub fn read_tag(tag_type_id: u8, data: &[u8]) -> DeserializeResult<Tag> { } } -#[inline] fn read_tag_byte(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_one_byte(data)?.map(move |byte| Tag::Byte(byte as i8))) } -#[inline] fn read_tag_short(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_short(data)?.map(move |i| Tag::Short(i as i16))) } -#[inline] fn read_tag_int(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_int(data)?.map(move |i| Tag::Int(i as i32))) } -#[inline] fn read_tag_long(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_long(data)?.map(move |i| Tag::Long(i as i64))) } -#[inline] fn read_tag_float(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_int(data)?.map(move |i| Tag::Float(f32::from_bits(i as u32)))) } -#[inline] fn read_tag_double(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_long(data)?.map(move |i| Tag::Double(f64::from_bits(i as u64)))) } -#[inline] fn read_tag_byte_array(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_int(data)? .and_then(move |size, rest| take(size as usize)(rest))? .map(move |arr| Tag::ByteArray(Vec::from(arr)))) } -#[inline] fn read_tag_string(data: &[u8]) -> DeserializeResult<Tag> { Ok(read_string(data)?.map(move |str| Tag::String(str))) } @@ -322,7 +311,6 @@ fn read_tag_compound(data: &[u8]) -> DeserializeResult<Tag> { Deserialized::ok(Tag::Compound(out), remaining_data) } -#[inline] fn read_tag_int_array(data: &[u8]) -> DeserializeResult<Tag> { read_array_tag( data, @@ -331,7 +319,6 @@ fn read_tag_int_array(data: &[u8]) -> DeserializeResult<Tag> { ) } -#[inline] fn read_tag_long_array(data: &[u8]) -> DeserializeResult<Tag> { read_array_tag( data, @@ -340,7 +327,6 @@ fn read_tag_long_array(data: &[u8]) -> DeserializeResult<Tag> { ) } -#[inline] fn read_array_tag<'a, R, F, M>( data: &'a [u8], parser: F, @@ -369,7 +355,6 @@ fn read_array_tag<'a, R, F, M>( } } -#[inline] fn read_string(data: &[u8]) -> DeserializeResult<String> { read_short(data)? .and_then(move |length, data| take(length as usize)(data))? diff --git a/src/utils.rs b/src/utils.rs index bb8ea36..fcfcb70 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,7 +1,6 @@ use crate::{DeserializeErr, DeserializeResult, Deserialized}; use alloc::string::String; -#[inline] pub fn read_one_byte(data: &[u8]) -> DeserializeResult<u8> { match data.split_first() { Some((byte, rest)) => Deserialized::ok(*byte, rest), @@ -9,7 +8,6 @@ pub fn read_one_byte(data: &[u8]) -> DeserializeResult<u8> { } } -#[inline] pub fn take(amount: usize) -> impl for<'b> Fn(&'b [u8]) -> DeserializeResult<'b, &'b [u8]> { move |data| { if data.len() < amount { @@ -20,7 +18,6 @@ pub fn take(amount: usize) -> impl for<'b> Fn(&'b [u8]) -> DeserializeResult<'b, } } -#[inline] pub fn read_long(data: &[u8]) -> DeserializeResult<u64> { Ok(take(8)(data)?.map(move |bytes| { (bytes[0] as u64) << 56 @@ -34,7 +31,6 @@ pub fn read_long(data: &[u8]) -> DeserializeResult<u64> { })) } -#[inline] pub fn write_long(v: u64) -> [u8; 8] { [ (v >> 56) as u8, @@ -48,7 +44,6 @@ pub fn write_long(v: u64) -> [u8; 8] { ] } -#[inline] pub fn read_int(data: &[u8]) -> DeserializeResult<u32> { Ok(take(4)(data)?.map(move |bytes| { (bytes[0] as u32) << 24 @@ -58,22 +53,18 @@ pub fn read_int(data: &[u8]) -> DeserializeResult<u32> { })) } -#[inline] pub fn write_int(v: u32) -> [u8; 4] { [(v >> 24) as u8, (v >> 16) as u8, (v >> 8) as u8, v as u8] } -#[inline] pub fn read_short(data: &[u8]) -> DeserializeResult<u16> { Ok(take(2)(data)?.map(move |bytes| (bytes[0] as u16) << 8 | (bytes[1] as u16))) } -#[inline] pub fn write_short(v: u16) -> [u8; 2] { [(v >> 8) as u8, v as u8] } -#[inline] pub fn hex(data: &[u8]) -> String { let mut str = String::with_capacity(data.len() * 2); for byte_ref in data { @@ -87,7 +78,6 @@ pub fn hex(data: &[u8]) -> String { const ZERO_ASCII_CODE: u8 = 48; const LOWER_A_ASCII_CODE: u8 = 97; -#[inline] fn hex_char_for(half: u8) -> char { if half > 0xF { panic!("not defined for > 0xF (operates on half a byte)"); @@ -100,7 +90,6 @@ fn hex_char_for(half: u8) -> char { } } -#[inline] pub fn parse_hex_char(data: u8) -> Option<u8> { const UPPER_A_ASCII_CODE: u8 = 65; const LOWER_F_ASCII_CODE: u8 = 102; diff --git a/src/v1_15_2.rs b/src/v1_15_2.rs index 661fcac..7abca58 100644 --- a/src/v1_15_2.rs +++ b/src/v1_15_2.rs @@ -821,12 +821,10 @@ proto_byte_enum!(HandshakeNextState, 0x02 :: Login ); -#[inline] fn varint_to_usize(v: VarInt) -> usize { v.into() } -#[inline] fn varint_from_usize(u: usize) -> VarInt { u.into() } @@ -837,34 +835,28 @@ counted_array_type!( varint_from_usize ); -#[inline] fn i16_to_usize(v: i16) -> usize { v as usize } -#[inline] fn i16_from_usize(u: usize) -> i16 { u as i16 } counted_array_type!(ShortCountedArray, i16, i16_to_usize, i16_from_usize); -#[inline] fn i32_to_usize(v: i32) -> usize { v as usize } -#[inline] fn i32_from_usize(u: usize) -> i32 { u as i32 } counted_array_type!(IntCountedArray, i32, i32_to_usize, i32_from_usize); -#[inline] fn i8_to_usize(v: i8) -> usize { v as usize } -#[inline] fn i8_from_usize(u: usize) -> i8 { u as i8 } |