From 9cd413d42c287154d6c64cc7913666b0517f35f3 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Thu, 26 Mar 2015 19:54:05 -0700 Subject: [PATCH] Fix massive performance issue The new version is multiple orders of magnitue faster than the old version. --- src/message.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/message.rs b/src/message.rs index 6b9577ce..e1018321 100644 --- a/src/message.rs +++ b/src/message.rs @@ -356,8 +356,9 @@ fn read_data_row(buf: &mut R) -> io::Result { let val = match try!(buf.read_i32::()) { -1 => None, len => { - let mut data = vec![]; - try!(buf.take(len as u64).read_to_end(&mut data)); + let mut data = Vec::with_capacity(len as usize); + data.extend((0..len).map(|_| 0)); + try!(util::read_all(buf, &mut data)); Some(data) } };