mirror of
https://github.com/pomerium/pomerium.git
synced 2025-08-06 10:21:05 +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
|
return filtered
|
||||||
}
|
}
|
||||||
|
|
||||||
var zstdEncoder, _ = zstd.NewWriter(nil, zstd.WithEncoderLevel(zstd.SpeedBestCompression))
|
|
||||||
|
|
||||||
func encodeQueryStringV1(values url.Values) []byte {
|
func encodeQueryStringV1(values url.Values) []byte {
|
||||||
return []byte(values.Encode())
|
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 {
|
func encodeQueryStringV2(values url.Values) []byte {
|
||||||
return zstdEncoder.EncodeAll([]byte(values.Encode()), nil)
|
return zstdEncoder.EncodeAll([]byte(values.Encode()), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
var zstdDecoder, _ = zstd.NewReader(nil)
|
|
||||||
|
|
||||||
func decodeQueryStringV1(raw []byte) (url.Values, error) {
|
func decodeQueryStringV1(raw []byte) (url.Values, error) {
|
||||||
return url.ParseQuery(string(raw))
|
return url.ParseQuery(string(raw))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var zstdDecoder, _ = zstd.NewReader(nil,
|
||||||
|
zstd.WithDecoderLowmem(true),
|
||||||
|
)
|
||||||
|
|
||||||
func decodeQueryStringV2(raw []byte) (url.Values, error) {
|
func decodeQueryStringV2(raw []byte) (url.Values, error) {
|
||||||
bs, err := zstdDecoder.DecodeAll(raw, nil)
|
bs, err := zstdDecoder.DecodeAll(raw, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -77,3 +77,16 @@ func TestEncryptURLValues(t *testing.T) {
|
||||||
assert.Less(t, len(encrypted.Encode()), 1024)
|
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