From 29b1cede64b79abee893ad7d8d54e55a9fbda3bc Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 5 May 2012 15:03:08 -0700 Subject: [PATCH 1/3] Optimizations suggested by Arthur. --- src/Serializer.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/Serializer.cpp b/src/Serializer.cpp index ac3c029ba..01073bba6 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -81,28 +81,31 @@ int Serializer::addRaw(const void *ptr, int len) bool Serializer::get16(uint16& o, int offset) const { if ((offset + 2) > mData.size()) return false; - o = mData.at(offset++); - o <<= 8; o |= mData.at(offset); + unsigned char *ptr = &mData[offset]; + o = *ptr++; o <<= 8; o |= *ptr; return true; } bool Serializer::get32(uint32& o, int offset) const { if ((offset + 4) > mData.size()) return false; - o=mData.at(offset++); - o<<=8; o |= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o |= mData.at(offset); + unsigned char *ptr = &mData[offset]; + o = *ptr++; + o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr; return true; } bool Serializer::get64(uint64& o, int offset) const { if ((offset + 8) > mData.size()) return false; - o=mData.at(offset++); - o<<=8; o|= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o|= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o|= mData.at(offset++); o <<= 8; o |= mData.at(offset++); - o<<=8; o|= mData.at(offset); + unsigned char *ptr = &mData[offset]; + o = *ptr++; + o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; + o <<= 8; o |= *ptr; return true; } From 84303365e2180992b60c57d5a64c830b811914ee Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 5 May 2012 15:03:44 -0700 Subject: [PATCH 2/3] Typo in previous commit. --- src/Serializer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Serializer.cpp b/src/Serializer.cpp index 01073bba6..59f0d77e7 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -81,7 +81,7 @@ int Serializer::addRaw(const void *ptr, int len) bool Serializer::get16(uint16& o, int offset) const { if ((offset + 2) > mData.size()) return false; - unsigned char *ptr = &mData[offset]; + const unsigned char *ptr = &mData[offset]; o = *ptr++; o <<= 8; o |= *ptr; return true; } @@ -89,7 +89,7 @@ bool Serializer::get16(uint16& o, int offset) const bool Serializer::get32(uint32& o, int offset) const { if ((offset + 4) > mData.size()) return false; - unsigned char *ptr = &mData[offset]; + const unsigned char *ptr = &mData[offset]; o = *ptr++; o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; @@ -100,7 +100,7 @@ bool Serializer::get32(uint32& o, int offset) const bool Serializer::get64(uint64& o, int offset) const { if ((offset + 8) > mData.size()) return false; - unsigned char *ptr = &mData[offset]; + const unsigned char *ptr = &mData[offset]; o = *ptr++; o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; o <<= 8; o |= *ptr++; From 1c4a07106217bac11f0a2db6675dcc956cd40607 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 5 May 2012 15:16:50 -0700 Subject: [PATCH 3/3] Fix a buglet Arthur found. --- src/Serializer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Serializer.cpp b/src/Serializer.cpp index 59f0d77e7..a41feecee 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -262,7 +262,7 @@ int Serializer::addVL(const std::vector& vector) { int ret = addRaw(encodeVL(vector.size())); addRaw(vector); - assert(mData.size() + (ret + vector.size() + encodeLengthLength(vector.size()))); + assert(mData.size() == (ret + vector.size() + encodeLengthLength(vector.size()))); return ret; }