• Michael Schurter's avatar
    encoding/json: reduce allocations by Decoder for \uXXXX · 7eb7f8f5
    Michael Schurter authored
    Manually convert hex escape sequence to rune instead of calling
    strconv.ParseUint.
    
    This inlines the unhex func from docs (and many other packages).
    
    name              old time/op    new time/op    delta
    UnicodeDecoder-4     468ns ± 1%     402ns ± 1%  -14.26%  (p=0.000
    n=10+10)
    
    name              old speed      new speed      delta
    UnicodeDecoder-4  29.9MB/s ± 1%  34.8MB/s ± 1%  +16.59%  (p=0.000
    n=10+10)
    
    name              old alloc/op   new alloc/op   delta
    UnicodeDecoder-4     44.0B ± 0%     36.0B ± 0%  -18.18%  (p=0.000
    n=10+10)
    
    name              old allocs/op  new allocs/op  delta
    UnicodeDecoder-4      4.00 ± 0%      2.00 ± 0%  -50.00%  (p=0.000
    n=10+10)
    
    Fixes #20567
    
    Change-Id: If350978d5bb98ff517485752184d02249f5d1f3a
    Reviewed-on: https://go-review.googlesource.com/44738
    Run-TryBot: Russ Cox <rsc@golang.org>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    7eb7f8f5
decode.go 33.2 KB