From 301a4720b762c8f3f25599bc075547d89d3d0188 Mon Sep 17 00:00:00 2001 From: debris Date: Sun, 27 Aug 2017 16:50:22 +0200 Subject: [PATCH] small optimizations for triehash --- util/src/triehash.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/util/src/triehash.rs b/util/src/triehash.rs index ca1974e7b..62d3dbf97 100644 --- a/util/src/triehash.rs +++ b/util/src/triehash.rs @@ -115,7 +115,7 @@ pub fn sec_trie_root(input: Vec<(Vec, Vec)>) -> H256 { let gen_input = input // first put elements into btree to sort them and to remove duplicates .into_iter() - .map(|(k, v)| (k.sha3().to_vec(), v)) + .map(|(k, v)| (k.sha3(), v)) .collect::>() // then move them to a vector .into_iter() @@ -155,8 +155,7 @@ fn hex_prefix_encode(nibbles: &[u8], leaf: bool) -> Vec { let oddness_factor = inlen % 2; // next even number divided by two let reslen = (inlen + 2) >> 1; - let mut res = vec![]; - res.reserve(reslen); + let mut res = Vec::with_capacity(reslen); let first_byte = { let mut bits = ((inlen as u8 & 1) + (2 * leaf as u8)) << 4; @@ -180,11 +179,11 @@ fn hex_prefix_encode(nibbles: &[u8], leaf: bool) -> Vec { /// Converts slice of bytes to nibbles. fn as_nibbles(bytes: &[u8]) -> Vec { - let mut res = vec![]; - res.reserve(bytes.len() * 2); + let mut res = Vec::with_capacity(bytes.len() * 2); for i in 0..bytes.len() { - res.push(bytes[i] >> 4); - res.push((bytes[i] << 4) >> 4); + let byte = bytes[i]; + res.push(byte >> 4); + res.push(byte & 0b1111); } res }