mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-09-16 09:36:18 +02:00
Improve download buffer calibration
This commit is contained in:
15
bufpool.go
15
bufpool.go
@@ -47,14 +47,7 @@ func (p *bufPool) calibrateAndClean() {
|
||||
score := p.calls[pos]
|
||||
|
||||
p.callInd = 0
|
||||
p.maxSize = 64
|
||||
|
||||
for {
|
||||
if p.maxSize > score {
|
||||
break
|
||||
}
|
||||
p.maxSize <<= 1
|
||||
}
|
||||
p.maxSize = p.normalizeSize(score)
|
||||
|
||||
p.defaultSize = maxInt(p.defaultSize, p.calls[0])
|
||||
p.maxSize = maxInt(p.defaultSize, p.maxSize)
|
||||
@@ -82,6 +75,8 @@ func (p *bufPool) Get(size int) *bytes.Buffer {
|
||||
p.mutex.Lock()
|
||||
defer p.mutex.Unlock()
|
||||
|
||||
size = p.normalizeSize(size)
|
||||
|
||||
minSize, maxSize, minInd, maxInd := -1, -1, -1, -1
|
||||
|
||||
for i := 0; i < len(p.buffers); i++ {
|
||||
@@ -155,3 +150,7 @@ func (p *bufPool) Put(buf *bytes.Buffer) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (p *bufPool) normalizeSize(n int) int {
|
||||
return (n/bytes.MinRead + 2) * bytes.MinRead
|
||||
}
|
||||
|
Reference in New Issue
Block a user