Descriptionencoding/json: faster encoding
The old code was caching per-type struct field info. Instead,
cache type-specific encoding funcs, tailored for that
particular type to avoid unnecessary reflection at runtime.
Once the machine is built once, future encodings of that type
just run the func.
benchmark old ns/op new ns/op delta
BenchmarkCodeEncoder 48424939 36975320 -23.64%
benchmark old MB/s new MB/s speedup
BenchmarkCodeEncoder 40.07 52.48 1.31x
Additionally, the numbers seem stable now at ~52 MB/s, whereas
the numbers for the old code were all over the place: 11 MB/s,
40 MB/s, 13 MB/s, 39 MB/s, etc. In the benchmark above I compared
against the best I saw the old code do.
Patch Set 1 #Patch Set 2 : diff -r 740d244b2047 https://go.googlecode.com/hg/ #Patch Set 3 : diff -r 740d244b2047 https://go.googlecode.com/hg/ #Patch Set 4 : diff -r 740d244b2047 https://go.googlecode.com/hg/ #Patch Set 5 : diff -r 740d244b2047 https://go.googlecode.com/hg/ #
Total comments: 7
Patch Set 6 : diff -r d881cb1ffc14 https://go.googlecode.com/hg/ #Patch Set 7 : diff -r d881cb1ffc14 https://go.googlecode.com/hg/ #Patch Set 8 : diff -r d881cb1ffc14 https://go.googlecode.com/hg/ #
Total comments: 3
Patch Set 9 : diff -r 07295f40fe71 https://go.googlecode.com/hg/ #
MessagesTotal messages: 13
|