protobuf-go/internal/encoding/json
Herbie Ong decef41dcc internal/encoding/json: improve decoding speed and memory allocation
Change use of regexp for matching literals true,false,null to simple
bytes comparison. Small gain from doing this.

Remove computing for position in Value as that is only needed in error
messages. In order to preserve ability to compute for position later,
store the original input in Value instead of just the slice containing
the value, however, need to also store the start index and size of the
parsed value.

Using benchmark in encoding/bench_test.go now shows faster time and less
memory usage than V1.

name          old time/op    new time/op    delta
JSONEncode-4    30.3ms ± 1%    10.3ms ± 1%  -66.02%  (p=0.000 n=9+8)
JSONDecode-4    54.4ms ± 3%    18.9ms ± 2%  -65.33%  (p=0.000 n=10+10)

name          old alloc/op   new alloc/op   delta
JSONEncode-4    10.3MB ± 0%     3.9MB ± 0%  -61.74%  (p=0.000 n=10+9)
JSONDecode-4    19.0MB ± 0%     3.6MB ± 0%  -81.29%  (p=0.000 n=10+9)

name          old allocs/op  new allocs/op  delta
JSONEncode-4      465k ± 0%       64k ± 0%  -86.30%  (p=0.000 n=10+8)
JSONDecode-4      289k ± 0%      163k ± 0%  -43.69%  (p=0.000 n=10+9)

Change-Id: I0a3108d675d6442674facb065aaebd14051f6c5d
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/172662
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-04-29 22:13:25 +00:00
..
bench_test.go internal/encoding/json: improve allocation of Value for JSON strings 2019-04-01 20:47:36 +00:00
decode_test.go encoding/jsonpb: add support for unmarshaling Any 2019-04-02 04:49:03 +00:00
decode.go internal/encoding/json: improve decoding speed and memory allocation 2019-04-29 22:13:25 +00:00
encode_test.go internal/encoding/json: rewrite to a token-based encoder and decoder 2019-03-11 21:53:21 +00:00
encode.go internal/encoding/json: rewrite to a token-based encoder and decoder 2019-03-11 21:53:21 +00:00
number.go internal/encoding/json: improve Value.Int,Uint by reducing allocations 2019-04-06 04:16:05 +00:00
string.go internal/encoding/{json,text}: improve string parsing 2019-04-17 00:26:13 +00:00
types.go encoding/jsonpb: add support for basic unmarshaling 2019-03-15 18:53:18 +00:00