• David Crawshaw's avatar
    encoding/json: copy-on-write cacheTypeFields · 5f209aba
    David Crawshaw authored
    Swtich from a sync.RWMutex to atomic.Value for cacheTypeFields.
    
    On GOARCH=386, this recovers most of the remaining performance
    difference from the 1.6 release. Compared with tip on linux/386:
    
    	name            old time/op    new time/op    delta
    	CodeDecoder-40    92.8ms ± 1%    87.7ms ± 1%  -5.50%  (p=0.000 n=10+10)
    
    	name            old speed      new speed      delta
    	CodeDecoder-40  20.9MB/s ± 1%  22.1MB/s ± 1%  +5.83%  (p=0.000 n=10+10)
    
    With more time and care, I believe more of the JSON decoder's work
    could be shifted so it is done before decoding, and independent of
    the number of bytes processed. Maybe someone could explore that for
    Go 1.8.
    
    For #16117.
    
    Change-Id: I049655b2e5b76384a0d5f4b90e3ec7cc8d8c4340
    Reviewed-on: https://go-review.googlesource.com/24472
    Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    5f209aba
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...