From 205f8aaa51243e73a8a01e5a195fe666dce3a5e5 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 6 Sep 2014 21:11:29 -0700 Subject: [PATCH] speed up serde2's json serialization to 180MB/s --- serde2/src/json/ser.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/serde2/src/json/ser.rs b/serde2/src/json/ser.rs index c00f888b..4f6214bd 100644 --- a/serde2/src/json/ser.rs +++ b/serde2/src/json/ser.rs @@ -110,7 +110,7 @@ impl ser::VisitorState> for Serializer { fn visit_seq< V: ser::Visitor, io::IoResult<()>> >(&mut self, mut visitor: V) -> io::IoResult<()> { - try!(write!(self.writer, "[")); + try!(self.writer.write_str("[")); loop { match visitor.visit(self) { @@ -120,7 +120,7 @@ impl ser::VisitorState> for Serializer { } } - write!(self.writer, "]") + self.writer.write_str("]") } #[inline] @@ -128,7 +128,7 @@ impl ser::VisitorState> for Serializer { T: ser::Serialize, io::IoResult<()>> >(&mut self, first: bool, value: T) -> io::IoResult<()> { if !first { - try!(write!(self.writer, ",")); + try!(self.writer.write_str(",")); } value.serialize(self) @@ -138,7 +138,7 @@ impl ser::VisitorState> for Serializer { fn visit_map< V: ser::Visitor, io::IoResult<()>> >(&mut self, mut visitor: V) -> io::IoResult<()> { - try!(write!(self.writer, "{{")); + try!(self.writer.write_str("{{")); loop { match visitor.visit(self) { @@ -147,7 +147,8 @@ impl ser::VisitorState> for Serializer { None => { break; } } } - write!(self.writer, "}}") + + self.writer.write_str("}}") } #[inline] @@ -156,11 +157,11 @@ impl ser::VisitorState> for Serializer { V: ser::Serialize, io::IoResult<()>> >(&mut self, first: bool, key: K, value: V) -> io::IoResult<()> { if !first { - try!(write!(self.writer, ",")); + try!(self.writer.write_str(",")); } try!(key.serialize(self)); - try!(write!(self.writer, ":")); + try!(self.writer.write_str(":")); value.serialize(self) } }