Fix massive performance issue

The new version is multiple orders of magnitue faster than the old
version.
This commit is contained in:
Steven Fackler
2015-03-26 19:54:05 -07:00
parent 7bcb8fb358
commit 9cd413d42c

View File

@@ -356,8 +356,9 @@ fn read_data_row<R: BufRead>(buf: &mut R) -> io::Result<BackendMessage> {
let val = match try!(buf.read_i32::<BigEndian>()) {
-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)
}
};