diff options
author | Rob Pike <r@golang.org> | 2014-06-30 11:06:47 -0700 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2014-06-30 11:06:47 -0700 |
commit | 5168c88003cfcf245d569cf79c8c96849ebcbc8e (patch) | |
tree | 3c8c7e3c48d0f06abbece3e08389bfe81ac73028 /doc | |
parent | c9200683bf2dee13e77b34a985ba6b42b4a8a17e (diff) | |
download | go-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