commit | decef41dccee58c474ca03c1100a1abaa6f30549 | [log] [tgz] |
---|---|---|
author | Herbie Ong <herbie@google.com> | Wed Apr 17 15:47:43 2019 -0700 |
committer | Herbie Ong <herbie@google.com> | Mon Apr 29 22:13:25 2019 +0000 |
tree | 6d3dbad9b01cdbf29f04a4dcd8e1dfe9d2976252 | |
parent | 4f0be71f91df46e6b018cde46fcef69ca915042b [diff] |
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>
WARNING: This repository is in active development. There are no guarantees about API stability. Breaking changes will occur until a stable release is made and announced.
This repository is for the development of the next major Go implementation of protocol buffers. This library makes breaking API changes relative to the existing Go protobuf library. Of particular note, this API aims to make protobuf reflection a first-class feature of the API and implements the protobuf ecosystem in terms of reflection.
List of relevant design documents:
We appreciate community contributions. See CONTRIBUTING.md.
Issues regarding the new API can be filed at github.com/golang/protobuf. Please use a APIv2:
prefix in the title to make it clear that the issue is regarding the new API work.