summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2014-06-30 11:06:47 -0700
committerRob Pike <r@golang.org>2014-06-30 11:06:47 -0700
commit5168c88003cfcf245d569cf79c8c96849ebcbc8e (patch)
tree3c8c7e3c48d0f06abbece3e08389bfe81ac73028 /doc
parentc9200683bf2dee13e77b34a985ba6b42b4a8a17e (diff)
downloadgo-5168c88003cfcf245d569cf79c8c96849ebcbc8e.tar.gz
encoding/gob: remove unsafe, use reflection.
This removes a major unsafe thorn in our side, a perennial obstacle to clean garbage collection. Not coincidentally: In cleaning this up, several bugs were found, including code that reached inside by-value interfaces to create pointers for pointer-receiver methods. Unsafe code is just as advertised. Performance of course suffers, but not too badly. The Pipe number is more indicative, since it's doing I/O that simulates a network connection. Plus these are end-to-end, so each end suffers only half of this pain. The edit is pretty much a line-by-line conversion, with a few simplifications and a couple of new tests. There may be more performance to gain. BenchmarkEndToEndByteBuffer 2493 3033 +21.66% BenchmarkEndToEndPipe 4953 5597 +13.00% Fixes issue 5159. LGTM=rsc R=rsc CC=golang-codereviews, khr https://codereview.appspot.com/102680045
Diffstat (limited to 'doc')
0 files changed, 0 insertions, 0 deletions