THRIFT-2502 Optimize go implementations of binary and compact protocols for speed
Client: Go
Patch: Aleksey Pesternikov
This closes #110
commit 7ece8e6f16f7ff46cda4b896215d595ac986d332
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-26T17:45:12Z
simplify buffered transport by reusing bufio
commit 814b661d7e5c3c27ad4035a42925eae619447ee3
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-26T18:05:12Z
zero-initialize buffers in framed transport
commit 0f576138e24fae8e7f8d210cfb480889a41d1d9a
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-26T19:19:39Z
do not buffer the whole frame while reading in framed transport
reuse frame header buffer
commit 4db9b65458eb34e1b1676dba76d1e664c6339a57
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-26T19:43:07Z
enforce max frame size in framed transport
commit 58ecc23ec1a2176f7dc5db7a658a51817dc626e6
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-27T00:31:16Z
microbenchmarks for serialization/deserialization (binary,compact)x(memoryBuffer,Stream,framedMemoryBuffer)x(bool,byte,i16,i32,i64,double,string,binary)
commit 156116f484db513251e0e6c65942466ed5a8142c
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-27T00:32:09Z
Merge branch 'go_microbench' into go_simplify_and_optimize
commit 1c27c0913cf5a8c0352afff1dae9e9fc9f758409
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-27T22:45:52Z
do not allocate buffer in TBinaryProtocol.WriteByte
commit 86addfb0585e04c648cde1b9cb1566d7976f8cda
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-27T23:46:12Z
no extra alloc in double marshaling test
commit 98ac62b0a80d4f27dce736b561005953cb915a90
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-27T23:46:50Z
Merge branch 'go_microbench' into go_simplify_and_optimize
commit 76c26624578a5455cacd08bb0167444748aaa41d
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-28T12:48:41Z
optimized ReadByte, WriteByte
commit 5a79d81d326582dbbdcf523ebc0180390ac24497
Author: Aleksey Pesternikov <ap@alekseys-mbp.att.net>
Date: 2014-04-28T13:03:26Z
optimized WriteString
commit f6d4a9aa65434831cbd2993148fa12c12b2a342c
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-28T15:35:06Z
compact protocol optimization
commit 03bdb6b9f097a47ef54826483867c23d49374ac0
Author: Aleksey Pesternikov <ap@alekseys-macbook-pro.local>
Date: 2014-04-28T16:08:52Z
cache reader and writer to aviod interface conversions
diff --git a/lib/go/thrift/protocol_test.go b/lib/go/thrift/protocol_test.go
index d88afed..67048fe 100644
--- a/lib/go/thrift/protocol_test.go
+++ b/lib/go/thrift/protocol_test.go
@@ -183,7 +183,7 @@
}
-func ReadWriteBool(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteBool(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(BOOL)
thelen := len(BOOL_VALUES)
err := p.WriteListBegin(thetype, thelen)
@@ -229,7 +229,7 @@
}
}
-func ReadWriteByte(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteByte(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(BYTE)
thelen := len(BYTE_VALUES)
err := p.WriteListBegin(thetype, thelen)
@@ -278,7 +278,7 @@
}
}
-func ReadWriteI16(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteI16(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(I16)
thelen := len(INT16_VALUES)
p.WriteListBegin(thetype, thelen)
@@ -315,7 +315,7 @@
}
}
-func ReadWriteI32(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteI32(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(I32)
thelen := len(INT32_VALUES)
p.WriteListBegin(thetype, thelen)
@@ -351,7 +351,7 @@
}
}
-func ReadWriteI64(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteI64(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(I64)
thelen := len(INT64_VALUES)
p.WriteListBegin(thetype, thelen)
@@ -387,7 +387,7 @@
}
}
-func ReadWriteDouble(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteDouble(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(DOUBLE)
thelen := len(DOUBLE_VALUES)
p.WriteListBegin(thetype, thelen)
@@ -396,13 +396,9 @@
}
p.WriteListEnd()
p.Flush()
- wrotebuffer := ""
- if memtrans, ok := trans.(*TMemoryBuffer); ok {
- wrotebuffer = memtrans.String()
- }
thetype2, thelen2, err := p.ReadListBegin()
if err != nil {
- t.Errorf("%s: %T %T %q Error reading list: %q, wrote: %v", "ReadWriteDouble", p, trans, err, DOUBLE_VALUES, wrotebuffer)
+ t.Errorf("%s: %T %T %q Error reading list: %q", "ReadWriteDouble", p, trans, err, DOUBLE_VALUES)
}
if thetype != thetype2 {
t.Errorf("%s: %T %T type %s != type %s", "ReadWriteDouble", p, trans, thetype, thetype2)
@@ -429,7 +425,7 @@
}
}
-func ReadWriteString(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteString(t testing.TB, p TProtocol, trans TTransport) {
thetype := TType(STRING)
thelen := len(STRING_VALUES)
p.WriteListBegin(thetype, thelen)
@@ -465,7 +461,7 @@
}
}
-func ReadWriteBinary(t *testing.T, p TProtocol, trans TTransport) {
+func ReadWriteBinary(t testing.TB, p TProtocol, trans TTransport) {
v := protocol_bdata
p.WriteBinary(v)
p.Flush()