THRIFT-2502 Optimize go implementations of binary and compact protocols for speed
authorJens Geyer <jensg@apache.org>
Thu, 1 May 2014 23:30:13 +0000 (01:30 +0200)
committerJens Geyer <jensg@apache.org>
Thu, 1 May 2014 23:35:24 +0000 (01:35 +0200)
commit0997250744112ec0519d5f67cda92b2b87fb0063
tree2cb5defbf9bb070c6a6d8018079a20ea1906ab96
parent731975a645e47c931fbbc42ac51c12b0873a50c2
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
12 files changed:
lib/go/thrift/binary_protocol.go
lib/go/thrift/buffered_transport.go
lib/go/thrift/compact_protocol.go
lib/go/thrift/framed_transport.go
lib/go/thrift/http_client.go
lib/go/thrift/iostream_transport.go
lib/go/thrift/lowlevel_benchmarks_test.go [new file with mode: 0644]
lib/go/thrift/protocol_test.go
lib/go/thrift/rich_transport.go [new file with mode: 0644]
lib/go/thrift/rich_transport_test.go [new file with mode: 0644]
lib/go/thrift/simple_server.go
lib/go/thrift/transport.go