From 691fc2febef3dd927dca7815b207fb4dad19b58f Mon Sep 17 00:00:00 2001 From: xtaci Date: Fri, 11 Aug 2023 11:33:20 +0800 Subject: [PATCH] use clear in go1.21 to zero instead of copying zeros --- fec.go | 12 ++---------- go.mod | 11 +++++++++-- go.sum | 9 --------- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/fec.go b/fec.go index 0a203ee3..88f5a9c4 100644 --- a/fec.go +++ b/fec.go @@ -41,9 +41,6 @@ type fecDecoder struct { decodeCache [][]byte flagCache []bool - // zeros - zeros []byte - // RS decoder codec reedsolomon.Encoder @@ -68,7 +65,6 @@ func newFECDecoder(dataShards, parityShards int) *fecDecoder { dec.codec = codec dec.decodeCache = make([][]byte, dec.shardSize) dec.flagCache = make([]bool, dec.shardSize) - dec.zeros = make([]byte, mtuLimit) return dec } @@ -199,7 +195,7 @@ func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) { if shards[k] != nil { dlen := len(shards[k]) shards[k] = shards[k][:maxlen] - copy(shards[k][dlen:], dec.zeros) + clear(shards[k][dlen:]) } else if k < dec.dataShards { shards[k] = xmitBuf.Get().([]byte)[:0] } @@ -279,9 +275,6 @@ type ( shardCache [][]byte encodeCache [][]byte - // zeros - zeros []byte - // RS encoder codec reedsolomon.Encoder } @@ -311,7 +304,6 @@ func newFECEncoder(dataShards, parityShards, offset int) *fecEncoder { for k := range enc.shardCache { enc.shardCache[k] = make([]byte, mtuLimit) } - enc.zeros = make([]byte, mtuLimit) return enc } @@ -341,7 +333,7 @@ func (enc *fecEncoder) encode(b []byte) (ps [][]byte) { for i := 0; i < enc.dataShards; i++ { shard := enc.shardCache[i] slen := len(shard) - copy(shard[slen:enc.maxSize], enc.zeros) + clear(shard[slen:enc.maxSize]) } // construct equal-sized slice with stripped header diff --git a/go.mod b/go.mod index 939cb268..fabce76f 100644 --- a/go.mod +++ b/go.mod @@ -4,13 +4,20 @@ require ( github.com/klauspost/reedsolomon v1.10.0 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.6.1 - github.com/templexxx/cpu v0.0.9 // indirect github.com/templexxx/xorsimd v0.4.1 github.com/tjfoc/gmsm v1.4.1 github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e +) + +require ( + github.com/davecgh/go-spew v1.1.0 // indirect + github.com/klauspost/cpuid/v2 v2.0.14 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/templexxx/cpu v0.0.9 // indirect golang.org/x/sys v0.0.0-20220624220833-87e55d714810 // indirect + gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) -go 1.13 +go 1.21 diff --git a/go.sum b/go.sum index 4f7cdc14..976a15fb 100644 --- a/go.sum +++ b/go.sum @@ -59,7 +59,6 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -70,18 +69,10 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810 h1:rHZQSjJdAI4Xf5Qzeh2bBc5YJIkPFVM6oDtMFYmgws0= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=