core/hpke: reduce memory usage from zstd (#4650)

* core/hpke: reduce memory usage from zstd

* use default compression, use default concurrency
This commit is contained in:
Caleb Doxsey 2023-10-31 10:24:56 -06:00 committed by GitHub
parent 2cc82ed706
commit a29476f61e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 4 deletions

View file

@ -145,22 +145,29 @@ func withoutHPKEParams(values url.Values) url.Values {
return filtered
}
var zstdEncoder, _ = zstd.NewWriter(nil, zstd.WithEncoderLevel(zstd.SpeedBestCompression))
func encodeQueryStringV1(values url.Values) []byte {
return []byte(values.Encode())
}
const zstdWindowSize = 8 << 10 // 8kiB
var zstdEncoder, _ = zstd.NewWriter(nil,
zstd.WithEncoderLevel(zstd.SpeedDefault),
zstd.WithWindowSize(zstdWindowSize),
)
func encodeQueryStringV2(values url.Values) []byte {
return zstdEncoder.EncodeAll([]byte(values.Encode()), nil)
}
var zstdDecoder, _ = zstd.NewReader(nil)
func decodeQueryStringV1(raw []byte) (url.Values, error) {
return url.ParseQuery(string(raw))
}
var zstdDecoder, _ = zstd.NewReader(nil,
zstd.WithDecoderLowmem(true),
)
func decodeQueryStringV2(raw []byte) (url.Values, error) {
bs, err := zstdDecoder.DecodeAll(raw, nil)
if err != nil {

View file

@ -77,3 +77,16 @@ func TestEncryptURLValues(t *testing.T) {
assert.Less(t, len(encrypted.Encode()), 1024)
})
}
func BenchmarkZSTD(b *testing.B) {
payload := url.Values{
"a": {strings.Repeat("b", 128)},
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
bs := encodeQueryStringV2(payload)
_, _ = decodeQueryStringV2(bs)
}
}