Skip to content

Commit a1696fb

Browse files
chore: Use faster JSON encoding library (#291)
1 parent b469406 commit a1696fb

File tree

4 files changed

+33
-16
lines changed

4 files changed

+33
-16
lines changed

cmd/scip/print.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@ package main
22

33
import (
44
"io"
5-
"math"
65
"os"
76
"strings"
87

8+
"github.com/bytedance/sonic"
9+
"github.com/cockroachdb/errors"
910
"github.com/k0kubun/pp/v3"
1011
"github.com/urfave/cli/v2"
11-
"google.golang.org/protobuf/encoding/protojson"
12-
13-
"github.com/cockroachdb/errors"
1412
)
1513

1614
func printCommand() cli.Command {
@@ -62,13 +60,8 @@ func printMain(indexPath string, colorOutput bool, json bool, out io.Writer) err
6260
return err
6361
}
6462
if json {
65-
pp.BufferFoldThreshold = math.MaxInt
66-
67-
options := protojson.MarshalOptions{}
68-
69-
jsonBytes, err := options.Marshal(index)
70-
out.Write(jsonBytes)
71-
return err
63+
encoder := sonic.ConfigDefault.NewEncoder(out)
64+
return encoder.Encode(index)
7265
} else {
7366
prettyPrinter := pp.New()
7467
prettyPrinter.SetColoringEnabled(colorOutput)

cmd/scip/print_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ func TestJSONPrinting(t *testing.T) {
4747

4848
type JsonIndex struct {
4949
Metadata struct {
50-
ProjectRoot string `json:"projectRoot"`
50+
ProjectRoot string `json:"project_root"`
5151
}
5252
Documents []struct {
53-
RelativePath string `json:"relativePath"`
53+
RelativePath string `json:"relative_path"`
5454
} `json:"documents"`
5555
}
5656

@@ -63,7 +63,7 @@ func TestJSONPrinting(t *testing.T) {
6363
log.Fatal(jsonErr)
6464
}
6565

66-
require.Equal(t, roundtripResult.Metadata.ProjectRoot, "howdy")
67-
require.Equal(t, len(roundtripResult.Documents), 1)
68-
require.Equal(t, roundtripResult.Documents[0].RelativePath, "f")
66+
require.Equal(t, "howdy", roundtripResult.Metadata.ProjectRoot)
67+
require.Equal(t, 1, len(roundtripResult.Documents))
68+
require.Equal(t, "f", roundtripResult.Documents[0].RelativePath)
6969
}

go.mod

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.20
44

55
require (
66
github.com/bufbuild/buf v1.25.0
7+
github.com/bytedance/sonic v1.12.5
78
github.com/cockroachdb/errors v1.8.9
89
github.com/fatih/color v1.15.0
910
github.com/google/go-cmp v0.5.9
@@ -32,6 +33,9 @@ require (
3233
github.com/bufbuild/connect-go v1.9.0 // indirect
3334
github.com/bufbuild/connect-opentelemetry-go v0.4.0 // indirect
3435
github.com/bufbuild/protocompile v0.5.1 // indirect
36+
github.com/bytedance/sonic/loader v0.2.0 // indirect
37+
github.com/cloudwego/base64x v0.1.4 // indirect
38+
github.com/cloudwego/iasm v0.2.0 // indirect
3539
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect
3640
github.com/cockroachdb/redact v1.1.3 // indirect
3741
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
@@ -63,6 +67,7 @@ require (
6367
github.com/inconshreveable/mousetrap v1.1.0 // indirect
6468
github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 // indirect
6569
github.com/klauspost/compress v1.16.7 // indirect
70+
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
6671
github.com/klauspost/pgzip v1.2.6 // indirect
6772
github.com/kr/pretty v0.3.1 // indirect
6873
github.com/kr/text v0.2.0 // indirect
@@ -87,6 +92,7 @@ require (
8792
github.com/spf13/cobra v1.7.0 // indirect
8893
github.com/spf13/pflag v1.0.5 // indirect
8994
github.com/tetratelabs/wazero v1.3.0 // indirect
95+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
9096
github.com/vbatts/tar-split v0.11.3 // indirect
9197
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
9298
go.opentelemetry.io/otel v1.16.0 // indirect
@@ -96,6 +102,7 @@ require (
96102
go.uber.org/atomic v1.11.0 // indirect
97103
go.uber.org/multierr v1.11.0 // indirect
98104
go.uber.org/zap v1.24.0 // indirect
105+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
99106
golang.org/x/crypto v0.12.0 // indirect
100107
golang.org/x/mod v0.12.0 // indirect
101108
golang.org/x/net v0.14.0 // indirect

go.sum

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,21 @@ github.com/bufbuild/connect-opentelemetry-go v0.4.0 h1:6JAn10SNqlQ/URhvRNGrIlczK
3333
github.com/bufbuild/connect-opentelemetry-go v0.4.0/go.mod h1:nwPXYoDOoc2DGyKE/6pT1Q9MPSi2Et2e6BieMD0l6WU=
3434
github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg=
3535
github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40=
36+
github.com/bytedance/sonic v1.12.5 h1:hoZxY8uW+mT+OpkcUWw4k0fDINtOcVavEsGfzwzFU/w=
37+
github.com/bytedance/sonic v1.12.5/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
38+
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
39+
github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
40+
github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
3641
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
3742
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
3843
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
3944
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
4045
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
4146
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
47+
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
48+
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
49+
github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
50+
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
4251
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
4352
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
4453
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
@@ -252,8 +261,11 @@ github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0
252261
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
253262
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
254263
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
264+
github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
265+
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
255266
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
256267
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
268+
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
257269
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
258270
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
259271
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -390,6 +402,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
390402
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
391403
github.com/tetratelabs/wazero v1.3.0 h1:nqw7zCldxE06B8zSZAY0ACrR9OH5QCcPwYmYlwtcwtE=
392404
github.com/tetratelabs/wazero v1.3.0/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ=
405+
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
406+
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
393407
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
394408
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
395409
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
@@ -436,6 +450,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
436450
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
437451
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
438452
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
453+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU=
454+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
439455
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
440456
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
441457
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -655,5 +671,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
655671
mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ=
656672
mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E=
657673
mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js=
674+
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
658675
pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw=
659676
pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=

0 commit comments

Comments
 (0)