good morning!!!!

Skip to content
Snippets Groups Projects
Unverified Commit 1c7c14ea authored by Anmol Sethi's avatar Anmol Sethi
Browse files

Pool sliding windows

parent c5b0a009
Branches
Tags
No related merge requests found
...@@ -115,16 +115,31 @@ func putFlateWriter(w *flate.Writer) { ...@@ -115,16 +115,31 @@ func putFlateWriter(w *flate.Writer) {
} }
type slidingWindow struct { type slidingWindow struct {
r io.Reader
buf []byte buf []byte
} }
var swPool = map[int]*sync.Pool{}
func newSlidingWindow(n int) *slidingWindow { func newSlidingWindow(n int) *slidingWindow {
p, ok := swPool[n]
if !ok {
p = &sync.Pool{}
swPool[n] = p
}
sw, ok := p.Get().(*slidingWindow)
if ok {
return sw
}
return &slidingWindow{ return &slidingWindow{
buf: make([]byte, 0, n), buf: make([]byte, 0, n),
} }
} }
func returnSlidingWindow(sw *slidingWindow) {
sw.buf = sw.buf[:0]
swPool[cap(sw.buf)].Put(sw)
}
func (w *slidingWindow) write(p []byte) { func (w *slidingWindow) write(p []byte) {
if len(p) >= cap(w.buf) { if len(p) >= cap(w.buf) {
w.buf = w.buf[:cap(w.buf)] w.buf = w.buf[:cap(w.buf)]
......
...@@ -110,6 +110,10 @@ func (mr *msgReader) returnFlateReader() { ...@@ -110,6 +110,10 @@ func (mr *msgReader) returnFlateReader() {
func (mr *msgReader) close() { func (mr *msgReader) close() {
mr.c.readMu.Lock(context.Background()) mr.c.readMu.Lock(context.Background())
mr.returnFlateReader() mr.returnFlateReader()
if mr.dict != nil {
returnSlidingWindow(mr.dict)
}
} }
func (mr *msgReader) flateContextTakeover() bool { func (mr *msgReader) flateContextTakeover() bool {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment