]> Cypherpunks repositories - gostls13.git/commit
encoding/json: optimize Marshal for maps
authorkorzhao <korzhao95@gmail.com>
Wed, 2 Aug 2023 09:39:09 +0000 (17:39 +0800)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 25 Aug 2023 08:50:07 +0000 (08:50 +0000)
commit4c5dac72029bb3dd4559a2fafe566bed71f22c42
tree91e1df369327502a2d231159bb66f2fa8a6a843d
parentdd38ade8d1f2cbe938604fbb34a69533cb128310
encoding/json: optimize Marshal for maps

Optimize marshaling of maps by using slices.SortFunc.

This drops an unnecessary field from reflectWithString,
which also reduces the cost of each swap operation.

benchmark                  old ns/op     new ns/op     delta
BenchmarkMarshalMap-10     228           139           -39.24%

benchmark                  old allocs     new allocs     delta
BenchmarkMarshalMap-10     11             8              -27.27%

benchmark                  old bytes     new bytes     delta
BenchmarkMarshalMap-10     432           232           -46.30%

Change-Id: Ic2ba7a1590863c7536305c6f6536372b26ec9b0c
Reviewed-on: https://go-review.googlesource.com/c/go/+/515176
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: qiulaidongfeng <2645477756@qq.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/encoding/json/bench_test.go
src/encoding/json/encode.go