mirror of
https://github.com/pomerium/pomerium.git
synced 2025-08-01 16:01:26 +02:00
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:
parent
2cc82ed706
commit
a29476f61e
2 changed files with 24 additions and 4 deletions
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue